我对ASPX页面进行了以下调用。 ASPX页面执行一些操作并返回一些JSON。所有这些都很好,我们不会改变那个模型。但是JSON是静态的,因为我们此时没有使用参数。
在ASPX页面中,如何访问传递给url的数据?例如,下面的varData包含referenceId。如何在ASPX页面中访问referenceId的值?
function CallService()
{
$.ajax(
{
url : varUrl,
type : varType,
cache : false,
data : varData,
contentType : varContentType,
processdata : varProcessData,
dataType : varDataType,
async : false,
success : function(response) {
console.log(response);
ProcessParameters(response);
},
error : function(err) {
//alert("error condition triggered");
console.log(err);
},
complete : function() {
//alert("complete");
console.log("Complete!");
}
})
}
以上所有参数均在此功能中设定:
function CallDlReportingService() {
varGuid = '12345678-1234-4567-8901-123456789012';
varType = "GET";
varUrl = "http://webServerA/page1.aspx";
varData = '{"referenceId": "' + varGuid + '"}';
varContentType = "application/json; charset=utf-8";
varDataType = "text";
varProcessData = true;
CallService();
}
答案 0 :(得分:3)
通常,如果您执行GET请求,数据将直接以查询字符串参数(键值对)的形式在URL中编码,如
http://someserver.com/somePage.aspx?id=5&filter=testfilter
因此,在服务器端,您通常可以使用Page.Request.QueryString
集合解析参数。
在您的特定情况下,您尝试在GET请求中发送JSON数据,这在某种程度上不太方便,因为您的最终结果(假设“varGuid”= abc)看起来像
http://someserver.com/sompage.aspx?{%22referenceId%22:%20%22abc%22}
这使得解析起来很困难。如果可能,您应该更改varData
部分s.t.它看起来像
...
varData = 'referenceId=' + varGuid
...
答案 1 :(得分:1)
您可以使用服务器端代码中的referenceId
功能访问HttpWebRequest.Item()
(通过GET或POST发送)。
例如:
string refId = Request.Item("referenceId").ToString();
答案 2 :(得分:0)
根据jquery.com,processData参数告诉AJAX将数据写入查询字符串:
processData
默认情况下,作为对象传入数据选项的数据(技术上,不是字符串)将被处理并转换为查询字符串,适合默认内容类型“application / x-www-form” -urlencoded”。如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false。
<强>更新强>
正如@Juri指出的那样,发布到查询字符串的数据不会很好,因此您可能难以在后端提取变量。
JQuery提供了$ .param函数来帮助解决这个问题。因此,如果您相应地更改了.ajax调用,则应该可以通过QueryString集合轻松访问JSON数据。
function CallService() {
$.ajax( {
url : varUrl,
type : varType,
cache : false,
data : $.param(varData), //<--change
contentType : varContentType,
processdata : varProcessData,
dataType : varDataType,
async : false,
success : function(response) {
console.log(response);
ProcessParameter(response);
},
error : function(err) {
//alert("error condition triggered");
console.log(err);
},
complete : function() {
//alert("complete");
console.log("Complete!");
}
})
}
那么,在您的aspx页面背后的代码中,您的数据可以作为
访问Request.QueryString["referenceId"]
同时查看此example,它演示了如何处理json数据中的特殊字符。