2016-11-30 67 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) 

這相當於你在做什麼