JSON2的JSON.stringify在IE8上的BUG

原本需求是这样的:
有个AJAX的操作,需要传递表单数据,但是表单内容的name都是以answer[]命名,所以想把数据以为数组json化后传递 (用到了json2.js)

var answerStr = JSON.stringify(arr);

之前一直 跑得好好的,结果今天内务接到投诉电话,说试卷提交后答案全部乱码

如: “ u5c71u7f8a ”… 那边用google浏览器也是坏的,而我的google 又是好的,

后来到网上找了一下,原来出现错误是因为IE8内置有 JSON.parse()和JSON.stringify() 两个方法
而这和json2.js的方法重名

解决方法1:

 var answerStr = JSON.stringify(arr);   
 var o = JSON.parse( answerStr); 
 eval("var answerStr = '"+JSON.stringify(o)+"';");    //这是中文的ASCII码,利用eval转换

解决办法2:把Json2.js里的JSON改下名称,改成JSON2,这样调用:JSON2.stringify();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JSON.stringifyJSON对象中的一个方法,用于将JavaScript对象转换为JSON字符串。它有三个参数:第一个参数是要转换的对象,第二个参数是一个可选的转换函数,用于控制转换过程,第三个参数是一个可选的空格参数,用于美化输出的字符串。例如,JSON.stringify({ x: 1, y: 2 })将返回字符串"{"x":1,"y":2}"。 JSON.parse是JSON对象中的另一个方法,用于将JSON字符串转换为JavaScript对象。它只有一个参数,即要解析的JSON字符串。例如,JSON.parse('{"x":1,"y":2}')将返回一个包含键值对{x: 1, y: 2}的JavaScript对象。 关于JSON.stringify的第二个参数,可以传入一个函数来控制转换过程。函数接受两个参数:键和值。如果要从转换中排除某些属性,可以在函数中返回undefined。下面是一个例子: ```javascript function replacer(key, value) { if (typeof value === "string") { return undefined; } return value; } var obj = { a: "foo", b: 42, c: ["apple", "banana"] }; var jsonString = JSON.stringify(obj, replacer); console.log(jsonString); // "{"b":42,"c":["apple","banana"]}" ``` 关于JSON.stringify的第三个参数,可以传入一个空格字符串或多个空格字符,用于美化输出的字符串。例如,JSON.stringify({ a: 2 }, null, " ")将返回"{\n "a": 2\n}",而JSON.stringify({ a: 2 }, null, "")将返回"{"a":2}"。 请问还有其他问题吗? 相关问题: 1. JSON.parse的用法是什么? 2. JSON对象还有哪些方法? 3. 什么是JSON?它有什么用途?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值