1

我正在 windows phone 7 上测试一个移动网站,但 JSON.stringify 函数不起作用。有谁知道为什么会发生这种情况或我能做些什么来解决这个问题?我正在对数组进行字符串化,以便将其存储在 cookie 中。这是我的代码:

vString = JSON.stringify(vehicleArray);
alert ('this alert will never execute');
$j.cookie('vehicleCookie', vString, { expires: 7, path: '/' }); //Store all the vehicles again to the cookie

vString 行之外的任何代码都将停止执行。

如果记录的话, vehicleArray 看起来像这样:

["145", "273", "241", "553", "490", "380"]

我无法提供有关什么工作或不工作的太多信息,因为 Windows Phone 没有我知道的任何类型的调试器,并且代码在 ie7 中工作正常。

4

3 回答 3

5

你可以扩展 jQuery 给它一个jQuery.stringify()函数。

它被缩小以节省空间:

jQuery.extend({stringify:function(a){var c=typeof a;if(c!="object"||a===null)return c=="string"&&(a='"'+a+'"'),String(a);else{var d,b,f=[],e=a&&a.constructor==Array;for(d in a)b=a[d],c=typeof b,a.hasOwnProperty(d)&&(c=="string"?b='"'+b+'"':c=="object"&&b!==null&&(b=jQuery.stringify(b)),f.push((e?"":'"'+d+'":')+String(b)));return(e?"[":"{")+String(f)+(e?"]":"}")}}});

因此,只需将其包含在文件顶部并将有问题的行更改为:

vString = jQuery.stringify(vehicleArray);
于 2011-10-05T21:40:52.253 回答
2

Windows Phone 7 的 IE 基于 IE9,因此应该支持JSON.stringify. 但是,正如 Microsoft 的文档明确指出的那样,如果您处于 quirks 模式,则 JSON.stringify 不可用:

以下文档模式不支持:Quirks、Internet Explorer 6 标准、Internet Explorer 7 标准。

确保您的 HTML 文档以<!DOCTYPE html>. 或者,您可以使用纯 JavaScript JSON 序列化程序,例如json2.js

于 2011-10-05T21:43:53.580 回答
0

我没有使用 Windows 手机的经验,但我怀疑设备上的浏览器不支持 JSON.stringify。对于较旧的浏览器(例如 ie6)也是如此 - 在这种情况下,一种解决方法是使用来自 Douglas Crockford 的 JSON.js ......

https://github.com/douglascrockford/JSON-js

json2.js:此文件在全局对象中创建一个 JSON 属性,如果还没有,则将其值设置为包含 stringify 方法和 parse 方法的对象。parse 方法使用 eval 方法进行解析,用几个正则表达式保护它,以防止意外的代码执行危险。在当前的浏览器上,这个文件什么都不做,更喜欢内置的 JSON 对象。

于 2011-10-05T21:44:48.877 回答