JQuery - Ajax:encodeUriComponent不工作(EncodeUri)

时间:2014-05-09 07:38:17

标签: javascript jquery asp.net ajax urlencode

在一个小的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

1 个答案:

答案 0 :(得分:7)

如果在进行ajax调用时有某种方式传递数据会更容易,哦等等,使用data选项

$.ajax({
    type : "GET",
    url  : "Search.aspx",
    data : {
        action   : 'GetDocumentInfoByChronicleId',
        objectId : '09028139800c59e3',
        Db       : 'DIV_Firm'
    }
});

jQuery将为您创建查询字符串并适当地转义它

作为旁注,encodeURI正是您应该用来编码包含?&等的查询字符串的内容,因为encodeUriComponent也会逃避这些字符,使查询字符串无效,但上面发布的方法更简单,因为您根本不必担心编码。