1

Windows Phone 7 でモバイル Web サイトをテストしていますが、JSON.stringify 関数が機能していません。なぜこれが起こっているのか、またはこれを解決するために何ができるかを誰かが知っていますか? クッキーに格納するために配列を文字列化しています。これは私のコードです:

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>または、 json2.jsなどのプレーンな JavaScript JSON シリアライザーを使用できます。

于 2011-10-05T21:43:53.580 に答える
0

Windows Phone の経験はありませんが、JSON.stringify がデバイスのブラウザーでサポートされていないと思われます。これは ie6 などの古いブラウザにも当てはまります。この場合、回避策の 1 つは Douglas Crockford の JSON.js を使用することです...

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

json2.js: このファイルは、グローバル オブジェクトに JSON プロパティを作成し、まだ存在しない場合は、その値を stringify メソッドと parse メソッドを含むオブジェクトに設定します。parse メソッドは eval メソッドを使用して解析を行い、偶発的なコード実行の危険から守るためにいくつかの正規表現で保護します。現在のブラウザーでは、このファイルは何もせず、組み込みの JSON オブジェクトを優先します。

于 2011-10-05T21:44:48.877 に答える