Request takes data from several sets in order, from the front to the back order is QueryString, Form, and finally ServerVariables. The Request object searches for variables in these collections in this order, and if there is a match, it will abort and ignore the following.
Now let's analyze your problem.
Suppose there is a page test.asp?id=111
Here our page uses the GET method. At this time, using request.querystring("id") and request("id") is the same. If we do not specify the REQUEST collection, we will first search from Querystring.
If our page uses the POST method to send data to test.asp, then using request.querystring("id") is not possible (it can only take GET), but you have to use request.from("id"). If you still use request("id"), you can also get the data, but first checking the value of QUERYSTRING, it is obviously slower.
Here is an example of detection you can take a look:
<%
IfRequest("submit")<>""then
Response.Write" directly: "&Request("username")&"<br>"
Response.Write"Get: "&Request.QueryString("username")&"<br>"
Response.Write" takes Post: "&Request.Form("username")&"<br>"
Endif
%>
<formname=form1action=""method=post>
<inputtype=testname="username"value="postuser">
<inputtype=submitname="submit"value="test">
</form>