由于&在string中,无法使用JSON传递

时间:2012-04-20 10:48:30

标签: javascript json

我使用这种格式在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” 由于这个“&”

,请求的格式会失真

我该怎么办?

1 个答案:

答案 0 :(得分:3)

  

我该怎么办?

您应该使用encodeURIComponent正确编码查询字符串的元素(这是MDC的链接,但该功能适用​​于所有浏览器,而不仅仅是Firefox)。

您没有显示实际代码,但是按照这些方式:

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

从技术上讲,更正确的方法是对密钥datadata1进行编码,如下所示:

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

...但是当你处理文字键时(而不是来自你无法控制的字符串的键),当你知道编码形式与原始键相同时(它是datadata1),你可以逃避不对密钥进行编码。