2

この形式を使用して、GET request でサーバーにデータを渡しています。

var val = {
    name:"abcd",
    age="21"
}
var val2 = "test2" ;
http://server-name/getdata.htm?data=JSON.stringify(val)&data1=val2 

.

これは問題なく動作しますが、val.name が "abcd&def" のような場合、この "&" が原因でリクエストの形式が歪んでしまいます

私は何をすべきか ?

4

1 に答える 1

3

私は何をすべきか ?

を使用して、クエリ文字列の要素を正しくエンコードする必要がありますencodeURIComponent(これは MDC へのリンクですが、この関数は Firefox だけでなく、すべてのブラウザーで使用できます)。

実際のコードは示していませんが、次の行に沿っています。

var link = "http://server-name/getdata.htm?data=" +
           encodeURIComponent(JSON.stringify(val)) +
           "&data1=" +
           encodeURIComponent(val2);

技術的には、より正しい方法は、次のようにキーdataとをエンコードすることです。data1

var link = "http://server-name/getdata.htm?" +
           encodeURIComponent("data") + "=" +
           encodeURIComponent(JSON.stringify(val)) +
           "&" + encodeURIComponent("data1") + "=" +
           encodeURIComponent(val2);

...しかし、リテラルキーを扱っている場合(制御できない文字列からのキーとは対照的に)、エンコードされた形式が元の形式と同一であることがわかっている場合(これはdataand用data1です)、逃げることができますキーをエンコードしないで。

于 2012-04-20T10:50:47.123 に答える