この記事の例では、ajax メソッドを使用して返された json データを解析する jQuery 関数について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
最近、jQuery の ajax メソッドを使用して json データを送受信するときに問題を発見しました。つまり、返されたデータがそのまま json データとして使用される場合があるということです。しかしそれができない場合もあります。いくつかの情報を確認すると、説明は次のようになります:
$.ajax({ url: ajaxurl, type: "POST", success: function(data){ //假设返回的json数据里有status及info2个属性 //有时候可以直接ajaxobj.status或者ajaxobj["status"]去访问 //但有时候,却要通过eval()或者 $.parsejson();才可以通过ajaxobj.status访问,而且这种情况下,需要是complete而不是success ajaxobj=eval("("+data+")"); //或者$.parsejson() //var ajaxobj = $.parsejson(data); if(ajaxobj.status=="0") { alert("请登陆."); } else if(ajaxobj.status=="1")//未绑定微博 { alert(ajaxobj.info); } return true; }, error:function(ajaxobj) { if(ajaxobj.responseText!='') alert(ajaxobj.responseText); } });
まず最初の状況について説明します:
はデータの属性名に直接アクセスできますが、サーバー側のコードは直接返される定数文字列である必要があります。
定数文字列とは何ですか? 定数文字列とは、"" の文字列を String 変数を定義せずに直接フロントデスクに出力する場合、データ属性によって直接アクセスできます。 name と jquery の最後に success と書くだけで取得できます。
eval が必要で成功を入力できない理由は次のとおりです:
この状況は、サーバーが出力するときに、バックグラウンドの JSON がより多くの場合、通常、この種の問題がコードで発生するためです。複雑です。整理するときにStringBufferを使用し、最後に印刷するときにStringBufferオブジェクトのtoStringを印刷するので、Stringオブジェクトを印刷するのと同じになります
この場合、jqueryのajaxメソッドは成功に入りません。メソッドであり、完全受信のみを使用できます。data 内の json データを解析したい場合は、data.responseText; で eval() または $.parsejson() を行う必要があります。
これら 2 点に加えて、もう 1 つあります。注意すべき点: jq1 .4 を使用している場合、json の形式にはより厳しい要件があります。すべてのキーと属性は二重引用符でマークする必要がありますが、キーに二重引用符のないネイティブ js は許可されているようです。この要件があります。
上記は私の個人的な考えと理解です。異なる意見がある場合は、アドバイスをお願いします。
この記事が jQuery プログラミングのすべての人に役立つことを願っています。
ajax メソッドを使用して返された json データを解析する jQuery 関数の例については、PHP 中国語 Web サイトに注目してください。