我使用这种格式在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” 由于这个“&”
,请求的格式会失真我该怎么办?
答案 0 :(得分: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);
...但是当你处理文字键时(而不是来自你无法控制的字符串的键),当你知道编码形式与原始键相同时(它是data
和data1
),你可以逃避不对密钥进行编码。