2011-06-19 11 views
0

parsエラー?私はjQuery.parseJSONを試してみましたが、どちらも動作しませんか?解析JSONのAjaxのVAR

+1

JSONデータを表示してください。また、ajaxは非同期なので、 'return obj'ではまだ設定されていないかもしれません。 –

+0

あなたのjsonは有効ですか? $ .parseJSONがあれば動作します。 Idはpreformanceの問題のために評価を避ける。 – locrizak

+0

@locrizak有効にする必要がありますか? ["ID": "21"、 "vname": "sad"、 "name": "Höbert"、 "adresse": "sdfdsf"、 "plz": "34534"、 "ort": "dfgdsfg" "email": "sdfgsdfg"}] – Don

答えて

0

変数jsonには、すでに解析された値(サーバーによって返されたデータ)が含まれています。 なぜあなたはevalにする必要がありますか?

obj = data; 

で十分です。

+0

はいそうです! – Don

0

json$.ajax()のtypeプロパティを設定します。

$.ajax({ 
    data: querystring, 
    dataType: "jsonp", 
    success: function(json) { 
     console.log(json); 
     alert(json[0].vname); 
     obj = eval("(" + json + ")"); 
    } 
}); 

をマニュアルから:

"JSONは":JSON として応答を評価し、JavaScriptオブジェクトを返します。 jQuery 1.4ではJSONデータは厳密には で解析されています。不正な形式のJSONがすべて拒否され、解析エラーがスローされます。 ( 適切なJSONフォーマットの詳細については、json.orgを参照してください。)

eval()shouldn't be used可能な場合 - あなたのケースでは、あなたのJSONデータは、あなたがeval()にそれを必要としない実行するために、実際のJavaScriptコードが含まれていない限り。

また、AJAX呼び出しは非同期です。つまり、AJAX要求は、通常のプログラム実行の順不同です。あなたのコードでは、return obj;を意味します。obj変数は、AJAX呼び出しがサーバーからのデータと共に返された後、へのeval()呼び出しの戻り値が割り当てられた後の値と同じ値を持ちません。これに対する解決策はevent-driven programmingです - あなたのケースでは、成功関数が発生させたい次の "イベント"を呼び出すようにするか、AJAX関数を使って変数(グローバルスコープ内、好ましくはnamespaced)に別のイベント(setInterval()などのタイミングイベントを使用して)ポーリングを行います。

+0

ok彼女のすべてのコード: – Don

+0

thx、おそらく、成功関数内のすべてがうまくいく理由を説明しますobj = data;作品!しかし、私はどのようにobjを返すことができますか? – Don

+0

イベントベースのプログラミングを使用する必要があります(上記の最後の段落を参照)。 – Andy