【问题标题】:How to % encode single quotes when making jQuery AJAX call?进行 jQuery AJAX 调用时如何对单引号进行编码?
【发布时间】:2016-11-30 20:44:12
【问题描述】:

我正在使用 $.ajax 向我的 Web 服务器发送 SQL 查询。查询字符串包含几个单引号 (')。我在编码单引号时遇到了一个非常混乱的问题。

我的代码是这样的,请注意查询字符串中的单引号:

var query = "select SID, age from Students where Name=\'Jason\'" + String.fromCharCode(10) +
            "order by age asc";
$.ajax({
    url: "http://mywebserver/query",
    data: {
        env: "dbserver1",
        endTime: "getUTCDate()",
        startTime: "dateadd(hour, -336, getUTCDate())",
        text: query
    },
    type: "GET",
    dataType: "json"
}).done(function (datum) {
});

如果我在调用 AJAX 之前没有显式调用 encodeURIComponent,jQuery 会为我编码,但是单引号默认不编码为 %27,所以查询不起作用;

如果我将编码的查询字符串传递给 jQuery,它会再次编码,这会弄乱查询字符串。

我能想象的唯一解决方案是,我必须覆盖 jQuery 编码 URL 的行为,并将所有 (') 替换为 %27。但我不知道 jQuery 是否支持。 有人对此有解决方案吗?

【问题讨论】:

    标签: javascript jquery ajax encoding


    【解决方案1】:

    当您使用GET 时,您可以通过创建自己的查询字符串来“覆盖”jQuery 的这种行为...

    url: "http://mywebserver/query"+
            "?env=" + encodeURIComponent(dbserver1)+
            "&endTime="+encodeURIComponent(getUTCDate())+
            "&startTime="+encodeURIComponent(dateadd(hour, -336, getUTCDate()))+
            "&text="+encodeURIComponent(query)
    

    这相当于你正在做的事情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多