2017-08-17 5 views
0

私は現在、以下のajax関数を使用してajaxクエリを送信しています。私は演算子「&」、演算子の右側の項目が削除されたが含まれるテキストを送信するときオペレータ "&"をAjaxクエリ経由で送信するにはどうすればよいですか?

$.ajax({ 
    type: "POST", 
    url: "insert.php", 
    data: dataString, 
    cache: false, 
    success: function (htmltwo) {}, 
    error: function (htmltwo) {} 
}); 

問題があります。以下は私のdataStringです。 HIDは「EEEE & LLLLL」を含むテキストであれば、サーバー側でそれを受信したときに

var dataString = 'id=' + id + '&dateoccur=' + dateoccur + '&timeoc=' + 
timeoc + '&hitype=' + hitype + '&hid=' + hid; 

だから例えば、&の右側の項目が削除されます。サーバー側では「EEEE」を受信します。私はajaxがdataString変数の一部であるため、これを認識していると仮定します。この問題をどうやって解決できるでしょうか?

+5

jQueryに必要に応じて値をエンコードさせるには 'data:{id:id、dateoccur:dateoccur、etc:etc} 'を試したことがありますか? (これは等号を含む値も扱うでしょう。) – nnnnnn

+0

Hehは、ライブラリがすでに行っていることをしようとすることで、人生をより困難にするケースです。 – Taplar

+0

同じ問題がコンマ(、)に転送されますか? – Shuyaib

答えて

0

私は常にオブジェクトではなく文字列を使用することをお勧めします。 jQueryは自動的にすべてを適切にエンコードします。

var dataString = { 
    id: id, 
    dateoccur: dateoccur, 
    timeoc: timeoc, 
    hitype: hitype, 
    hid: hid 
}; 

これははるかに読みやすく、IMHOです。

実際に文字列を作成したい場合は、Nisarg Shahの答えのようにencodeURIComponentを使用してください。特殊文字が含まれていない限り、すべてのパラメータに対してこれを行う必要があります。

1

encodeURIComponentをJavascriptで使用して、&などの文字をエンコードし、サーバーでデコードすることができます。

var hidValue = "EEEE&LLLLL"; 
 

 
var hidValueEncoded = encodeURIComponent(hidValue); 
 
console.log(hidValueEncoded);

+0

ありがとうございます。私は多くのコードを変更する必要があるので、私はこの答えを考慮しませんでした。形式データ:{id:id、dateoccur:dateoccur、etc:etc}は、上記のコメントとしてnnnnによって働いていました – Shuyaib

関連する問題