2016-11-30 69 views
0

我正在使用$ .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是否支持。 有没有人有这个解决方案?

回答

0

当你使用GET,你可以在“越权”的jQuery的这种行为通过创建自己的查询字符串...

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

这相当于你在做什么