如何在编写jQuery AJAX调用时对单引号进行编码?
问题描述:
我正在使用$ .ajax向我的Web服务器发送SQL查询。查询字符串包含几个单引号(')。我在编码单引号时遇到了一个非常混乱的问题。如何在编写jQuery AJAX调用时对单引号进行编码?
我这样的代码,请注意查询字符串中的单引号:
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) {
});
如果我不显式调用encodeURIComponent方法使AJAX调用之前,jQuery将编码对我来说,但是,单引号默认情况下不会编码为%27,因此查询不起作用;
如果我将一个编码的查询字符串传递给jQuery,它会再次编码,这会弄乱查询字符串。
我能想到的唯一解决方案是,我必须覆盖jQuery如何编码URL的行为,并用%27替换所有(')。但我不知道jQuery是否支持。 有没有人有这个解决方案?
答
当你使用GET
,你可以在“越权”的jQuery的这种行为通过创建自己的查询字符串...
url: "http://mywebserver/query"+
"?env=" + encodeURIComponent(dbserver1)+
"&endTime="+encodeURIComponent(getUTCDate())+
"&startTime="+encodeURIComponent(dateadd(hour, -336, getUTCDate()))+
"&text="+encodeURIComponent(query)
这相当于你在做什么