2011-09-15 21 views
1

私のコードはいくつかのjsonを検索しますが、結果はないようです。 Firebugを使ってデバッグすると、リクエストが完了し、期待されるjson(bottom)を返すことがわかります。Jquery jsonがokeyを要求しましたが、結果はありません

問題は、次の行(varオプション= ...)には決して到達しないので、何か問題があったと思いますか?

$.getJSON("Gateway.php?action=UserAction&subAction=json", function(result) { 
    var options = $("#creatorUserId"); 
    $.each(result, function(item) { 
     options.append($("<option />").val(item.id).text(item.value)); 
    }); 
}); 

JSON:

json[{"id":"1","value":"Teddy"},{"id":"2","value":"Fred"},{"id":"3","value":"Roel"}] 
+2

はあなたの応答をい〜を含む最初の 'json'にose文字がありますか?これは有効なjsonではなく、jqueryはその失敗を考慮して、成功のコールバックを実行しません(しかし、静かに失敗します)。 – davin

+0

また、Firebugには、呼び出しの同期実行が可能性が高いが、応答は表示されません。私。 getJSONを実行しているときにデバッガを実行すると、コールバックを実行する予定はなく、実行中であると見なします。なぜなら、これは同期して実行されないからです。 – davin

+0

ああ、 "json"とエコーしたコードのどこかにエコーがありました。しかし、問題を解決しませんでした。あなたの2番目のコメントでは、Firebugコンソール上のget Gateway.php ...の応答であり、デバッガ自体ではありません。 –

答えて

1

$.each()のコールバックは、(まで)の2つのパラメータをとり - 最初のインデックス番号であり、及び第二の値です。 itemは、常に項目番号ではなくインデックス番号です。

これを試してみてください:

Gateway.php?action=UserAction&subAction=jsonを返す必要があります:

[{"id":"1","value":"Teddy"},{"id":"2","value":"Fred"},{"id":"3","value":"Roel"}] 

javscript/jqueryの:

$.getJSON("Gateway.php?action=UserAction&subAction=json", function(result) { 
     var options = $("#creatorUserId"); 
     $.each(result, function(num,item) { 
      options.append($("<option />").val(item.id).text(item.value)); 
     }); 
    }); 

か、少し小さいのjQueryを使用する:

$.getJSON("Gateway.php?action=UserAction&subAction=json", function(result) { 
     var options = $("#creatorUserId"); 
     while(result) { 
      var item = result.shift(); 
      options.append($("<option />").val(item.id).text(item.value)); 
     }; 
    }); 
+0

ありがとう、それは最初の問題を解決しませんでしたが、スクリプトの残りの部分を修正しました。 –

+0

私はこのテクニックを自分のコードで使っていましたが、 '$ .ajax'はエラーコールバックをサポートしていますが、' $ .getJSON'はそうではありません。だから次回はより冗長な '$ .ajax'メソッドの使用を検討するかもしれないので、エラーコールバックは問題を追跡するのに役立ちます。 – Blazemonger

関連する問題