在一个小的asp.net webclient中,我有以下Ajax调用。
$.ajax({
type: "GET",
url: "Search.aspx?action=GetDocumentInfoByChronicleId&" + querystring
})
.success(function (msg) {
$("#documentcontent").html(msg);
})
querystring
适用于默认字符,但在使用特殊字符时似乎不起作用(请参阅下面的示例)
objectId=09028139800c59e3&Db=DIV_Firm <== Works
objectId=090281>>773c5983&Db=DIV_Firm <== Non Working
基于this(以及更多关于SO的帖子我选择更改我的ajax调用,如下所示(EncodeUriComponent
)。但似乎没有一个工作(即使使用原始查询字符串也是如此)。
有人能向我指出我做错了什么吗?
$.ajax({
type: "GET",
url: "Search.aspx?action=GetDocumentInfoByChronicleId&" + encodeURIComponent(querystring)
})
.success(function (msg) {
$("#documentcontent").html(msg);
})
注意: EncodeUri
似乎正在运作。但我更喜欢使用EncodeUriComponent
答案 0 :(得分:7)
如果在进行ajax调用时有某种方式传递数据会更容易,哦等等,使用data
选项
$.ajax({
type : "GET",
url : "Search.aspx",
data : {
action : 'GetDocumentInfoByChronicleId',
objectId : '09028139800c59e3',
Db : 'DIV_Firm'
}
});
jQuery将为您创建查询字符串并适当地转义它
作为旁注,encodeURI
正是您应该用来编码包含?
,&
等的查询字符串的内容,因为encodeUriComponent
也会逃避这些字符,使查询字符串无效,但上面发布的方法更简单,因为您根本不必担心编码。