我知道这已被问过几次,但请多多包涵。
我有一个相当复杂的谷歌地图对象(它包含各种节点、坐标等),我试图将它作为查询字符串传递。
我需要一个播放 javascript/jQuery 的解决方案。
我已经尝试过给出 jQuery 错误的 .param 方法。唯一有效的是“stringify”方法,然后创建一个字符串,当它显示为 url 时看起来有点像这样:%7B%5C"shape_1%5C"%3A%7B%5C"color%5C"%3A %5C"%237F0000%5C"%2C%5C"数据%5C"%3A%7B%5C"b%5C"%3A%5B%7B%5C"Na%5C"%3A51.56727431757122%2C%5C" OA%5C"%3A-0.10462402858888709%7D%2C....
php 将其翻译为: {\\"shape_1\\":{\\"color\\":\\"#7F0000\\",\\"data\\":{\\"b\\":[ {\\"Na\\":51.56727431757122,\\"Oa\\":-0.10462402858888709},...
但是已经说过我不想使用 PHP,我只是向您展示它的作用,以防它帮助您了解 stringify 对对象做了什么。
在我使用 Javascript 取消转义后,它看起来更正常一些,例如:
{\"shape_1\":{\"color\":\"#7F0000\",\"data\":{\"b\":[{\"Na\":51.56727431757122,\"Oa\": -0.10462402858888709},..
如您所见,未转义的序列到处都有这些斜线。当我尝试将其评估为 JSON 对象时,我得到“非法令牌 \”。parse 方法也失败了。我只是找不到任何方法将此字符串放回原来的复杂 JSON 对象中。我在网上寻找了各种建议,但都失败了。我也不明白为什么 stringify 会注入所有这些根本不应该存在的斜线。如果有人知道如何获取该对象,将其放入查询字符串中,然后将其解析回来,我将不胜感激。
缺口
更新:答案是这样的:
encodeURIComponent(JSON.stringify(myObject));
然后在接收端:
var a = querySt("data");
var b = decodeURIComponent(a);
var c = unescape(b);
var d = JSON.parse(c);
或全部在一行
JSON.parse(unescape(decodeURIComponent(querySt("data"))));
缺口