2015-10-05 9 views
13

私はこのjQueryのAjaxの空白やアンパサンド問題

var apiOptions = { 
    url: url, 
    dataType: 'jsonp', 
    type: "GET", 
    success: success 
}; 

if(dataOptions) { 
    apiOptions.data = { 
     key: self.settings.key, 
     limit: self.limit, 
     address: dataOptions.address, 
    }; 
} 
$.ajax(apiOptions); 

ようなものをやっていると、私は「&」を持っているときには、アンパサンドの前後にスペースので、以外のすべてのために正常に動作します。だから、リクエストパラメータは"D+&+D,+enterprisess"またはD+%26+D%2Cのように見えます。これはサーバー上に404を返します。

ここに何をすべきか任意のアイデア? AJAXのスペースとspeacial文字とパスパラメータの

+0

使用 'encodeURIComponentで()'とString.prototype.replace()を使用してみてください。私は私がする必要はありませんjqueryのAJAX呼び出しに私のパラメータを渡して読んだから –

+0

。また、私はそれを試して、それがさらに悪化すると私はそれがダブルエンコーディングを好むと思います – StevieB

+0

Funnilyそれは "D +%26 + D%2C"のような私のローカルサーバーすなわちパラメータで動作しますが、開発サーバーではありません – StevieB

答えて

2

、あなたは利用エスケープとアンエスケープ機能を持っています。

var test = 'Exemplae Actão ç @#$%$ '; 
var testEscape = escape(test); 
console.info(test , testEscape , unescape(testEscape)); 

このあなたを解く問題

1

自分の価値観をエンコードURLにRegExp()/\s(&)\s/

var data = "123 & abc"; 
 
var res = data.replace(/\s(&)\s/, "$1"); 
 
console.log("data:", data,"res:", res)