2

我正在使用这种格式在 GET 请求中将数据传递给服务器。

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 回答