JQuery - Ajax: encodeUriComponent不工作(EncodeUri工作)

JQuery - Ajax: encodeUriComponent not working (EncodeUri does)

本文关键字:工作 EncodeUri encodeUriComponent Ajax JQuery      更新时间:2023-09-26

在一个小的asp.net web客户端中,我有以下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

基于此(以及更多关于SO的帖子),我选择改变我的ajax调用如下(EncodeUriComponent)。但似乎没有一个是工作的(,即使与原来的querystring)。

有人能指出我到底做错了什么吗?
$.ajax({
    type: "GET",
    url: "Search.aspx?action=GetDocumentInfoByChronicleId&" + encodeURIComponent(querystring)
})
.success(function (msg) {
    $("#documentcontent").html(msg);
})

注意: EncodeUri似乎正在工作。但我更喜欢使用EncodeUriComponent

如果有一些方法可以在ajax调用时传递数据,哦,等等,有,使用data选项

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

jQuery将为您创建querystring并对其进行转义

作为旁注,encodeURI正是你应该用来编码包含?, &等的querystring,因为encodeUriComponent也会转义这些字符,使querystring无效,但上面发布的方法要简单得多,因为你根本不用担心编码。