1

私はAJAX呼び出しに非常に慣れていません。いくつかのチュートリアルのためにウェブをざっと見てきましたが、それでもうまくいきませんでした。

入力フィールドには「idkey」のIDが割り当てられています。スクリプトは次のとおりです。

$(document).on("keyup.autocomplete", "#idkey", function(){ 
    var query = "q=" + $(this).val();
    $.ajax({
        url: 'api.php',
        type: 'GET',
        data: query,
        dataType: 'json',
        success: function(data) {
            alert(data);
            for (var i=0;i<data.length;i++) {
                content = data[i].IDKey;
                content += "<br>";
                $(content).appendTo("#output");
                // updateListing(data[x]);
            }
        }
    });
});

サーバー側では、api.phpの出力は次のとおりです。

[{"IDKey":"30000001"},{"IDKey":"30000002"},{"IDKey":"30000004"}]

なぜalert(data)戻るのかわかりません[object Object], [object Object], [object Object]。なぜこれが起こっているのかについての手がかりはありますか?

p / s:phpファイルのヘッダーは。に設定されていContent-Type: application/jsonます。

4

6 に答える 6

5

type alert(JSON.stringify(data));

于 2012-09-21T00:01:08.163 に答える
4

[object Object], [object Object], [object Object]3つのJavaScriptオブジェクトの配列があり、オブジェクトを文字列としてアラートすることはできないため、アラートが返されますconsole.log。オブジェクトのコンテンツを表示するために使用できます。console.log代わりに使用alertして、ブラウザのコンソールを確認してください

于 2012-09-21T00:00:52.590 に答える
2

あなたの json レスポンスは 3 つの object の配列です。それが、アラートをオブジェクトとして表示している理由です..

試してみてくださいalert(data[0].IDKey)..それはあなたに30000001を与えるはずです

データを表示するには、console.log を試すか、for ループ内にアラートを配置します

for (var i=0;i<data.length;i++) {
    alert(data[i].IDKey);
 }

$.each(data, function(i, value) {
   console.log('Value of '+ i +' is : ' + value);
})
于 2012-09-21T00:15:43.370 に答える
1

は3 つのオブジェクトを返していますalert(data)。JSON とはそういうものだからです。Javaスクリプトオブジェクトの表記。

それは配列オブジェクトを返しています。それがすべての戻り値であり、それがそのように表示される理由です。

このような配列の結果を見たい場合は、各オブジェクトに何が含まれているかを確認するには、次を使用する必要がありますconsole.log()

console.log(data)
于 2012-09-21T00:02:11.187 に答える
0

スシャントが上で言ったこと

    for (var i=0;i<data.length;i++) {
        alert(data[i].IDKey);
    }

IE を使用している場合は、console.log() メソッドを削除するか、コメント アウトすることを忘れないでください。IEはそれらをあまり好きではありません。

于 2015-03-09T19:23:58.687 に答える