2012-02-16 8 views
2

私には奇妙なシナリオがあります。私は$ .ajax()を使用してデータ用に私のサーバーにajax呼び出しを行い、これらのサーバー呼び出しには同じ種類の形式を使用しています。すべてうまくいっていますが、突然関数を書き、jQueryがドリルできないJSONオブジェクトを返しました。私はFirebugでそれを見て、すべてが正常に見えます。なぜ私は突然この特定のデータオブジェクトに掘り下げることができないのかを理解するために、誰かに私を助けることができますか?ここでJqueryは突然jsonにドリルダウンできませんか?

は、Ajaxコードです:私はこれを行うにしようとすると

$.ajax(
    { 
     type: "GET", 
     url: "php/getoptions.php", 
     dataType: 'json', 
     data: 'id='+id, 
     success: function(j) 
     {   
      alert(j.isdefault); 
     } 
    }); 

、アラートが「未定義。」私を与えます私は "アラート(JSON.stringify(j))"を試して、有効なJSONが返されるのを見ています。 Firebugで見たJSONをJSONLintで実行しても有効です。ここで

は戻ってくるJSONのサンプルです:

[{"isdefault":"1","option1":"1","option2":"0","option3":"0","option4":"1","option5":"1"}] 

何が起こっていますか?なぜjQueryは突然このデータセットにドリルダウンできないのですか?

ありがとうございました!

答えて

7

isdefaultプロパティを持つオブジェクトが配列のインデックス0にあるので、あなたは... ...

alert(j[0].isdefault); 

を必要としています。

+0

ありがとうございました。しかし、なぜ私はなぜそれが突然問題になったのですか?私は、PHPから返された他のjson配列でこの種の問題を経験したことはありません....奇数 – ackerchez

+0

彼は言うとおりです。 JSONには、配列にラップされたオブジェクトが含まれています(全体を角括弧で囲んでください)。あなたは 'alert'の代わりに' console.dir'や 'console.log'をデバッグに使うことができます。これははるかに汎用性があり、より有用な出力を提供します。また、迷惑ではありません。これで、 'console.dir(j)'を使ってJSONを受け取り、適切に解析し、配列( 'isdefault'という名前のプロパティを持たない)であることを発見できます。 – Amadan

+0

@ackerchez:jQueryでは何も変更されませんでした。あなたのサーバーレスポンスで何か変わったはずです。そうでなければ、別の何かをしているかもしれません。確かに言うことはできません。 –

関連する問題