如何在进行jQuery AJAX调用时对单引号进行%编码?

时间:2016-11-30 20:44:12

标签: javascript jquery ajax encoding

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

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

foreach ($data->set as $row) {
    $row->value = ucwords($row->name);
}

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

这相当于你正在做的事情