我无法访问从jquery ajax调用发送的经典asp文件中的数据。
这是我的ajax电话
$.ajax({
type: "GET",
url: "mymessage.asp?phone=" + $( "#mobile1" ).val() + "&message=" + $('textarea#message').val(),
data:{
phone: $( "#mobile1" ).val(),
message: $('textarea#message').val()
},
contentType: "text/html; charset=utf-8",
dataType: "text",
success: function(msg) {
// Replace the div's content with the page method's return.
alert(msg);
}
});
我正在从asp页面访问请求值
<%Request.Form("phone")%>
和
<%Request.Form("message")%>
但它不起作用。
我使用Firefox firebug进行了调试。该请求正在访问mymessage.asp页面,但我无法访问经典asp文件中的请求变量
经过长时间的搜索和各种试验和打击方法,我厌倦了。究竟出了什么问题?请帮忙。
P.S:数据值没有任何问题,因为我使用console.log打印并且数据值很好。问题在于访问经典asp代码中的数据。您还可以看到我保留了数据和附加的URL(虽然我单独尝试了它们仍然无法正常工作)
答案 0 :(得分:1)
由于您将这些值作为查询字符串(mymessage.asp?phone=" + $( "#mobile1" ).val() + "&message=" + $('textarea#message').val()
)传递给asp页面,因此您无法使用Request.Form
检索这些值,因为它是GET
请求而非{{1}请求。另外,如果您查看POST
方法,则为Get方法 - ajax
。
要访问这些值,您需要使用type: "GET",
。
e.g。 Request.QueryString
阅读本文 - Difference between Request.Form and Request.QueryString?
答案 1 :(得分:1)
@ArindamNayak是absolutely right。
HTTP GET
请求将数据作为序列化参数字符串传递,这些参数由附加到请求URL的&符号(&
)分隔符分隔,也称为查询字符串。
HTTP POST
请求将请求正文中的数据作为序列化参数字符串传递,其形式与GET
查询字符串相同。
经典ASP可以轻松地使用两个集合
访问这些值 Request.QueryString() - 包含通过GET
请求方法请求的所有参数。
Request.Form() - 包含通过POST
请求方法请求的所有参数。
请求() - 包含通过GET
或POST
请求方法请求的所有参数。
注意: - 此方法的效率较低,因为如果您知道数据来自何处,则必须同时在QueryString
和Form
集合中检查参数< em>(无论是GET
还是POST
请求)最好使用相应的集合。
如果提出以下请求
GET http://example.com/default.asp?phone=123456&message=test HTTP/1.1
在default.asp
页面中,可以使用Request.QueryString()
或Request()
个集合来访问参数。
<%
Dim message
'Retrieves parameter from Request.QueryString collection.
phone = Request.QueryString("message")
'Checks both Request.Form and Request.QueryString.
phone = Request("message")
Response.Write phone 'Returns "test"
%>
如果提出以下请求
POST http://example.com/default.asp HTTP/1.1 phone=12345&message=test
在default.asp
页面中,可以使用Request.Form()
或Request()
个集合来访问参数。
<%
Dim message
'Retrieves parameter from Request.Formcollection.
phone = Request.Form("message")
'Checks both Request.Form and Request.QueryString.
phone = Request("message")
Response.Write phone 'Returns "test"
%>
jQuery非常容易传递这些信息,你要确保正确设置的三个属性是;
url - 我们向其发送数据的网址,不包括查询字符串,只包含经典ASP网页的绝对/相对路径。
类型 - GET
或POST
,具体取决于预期的请求方式。
数据 - 我们发送到网址的数据。如果是type: "GET"
,则数据将在AJAX请求期间自动序列化并附加为URL查询字符串。
使用我之前的示例,AJAX请求看起来像这样;
$.ajax({
type: "GET",
url: "http://example.com/default.asp",
data: {
phone: "12345",
message: "test"
}
});
将创建一个RAW HTTP请求,如
GET http://example.com/default.asp?phone=12345&message=test HTTP/1.1
并在经典ASP页面default.asp
中,您可以使用类似的内容访问参数
<%
Dim phone, message
phone = Request.QueryString("phone")
message = Request.QueryString("message")
%>