3

質問しなければならないのは恥ずかしいことですが、私は経験の浅い Javascript 開発者であることを率直に認めており、これを理解することはできません。うまくいけば、これは他の誰かにとっては非常に簡単です. このサイトが私を継続的に提供してくれることに対して、ここにいるすべての人に前もって感謝したいと思います.

数日前、私はこの質問をしましたが、そのエラーが発生しなくなりました。しかし、変数に格納されているデータに実際にアクセスしようとして、壁にぶつかりました。私のJSONは次のようになります。

[
    {"id":"1","name":"Bob","haircolor":"Brown"},
    {"id":"2","name":"Carol","haircolor":"Red"}
]

次のような変数に入ります。

var people=[];
$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
    people.push(data);
});

people を配列として初期化したおかげで、エラー メッセージが表示されなくなりました。しかし、人のコンテンツにもアクセスできません。people.lengthは 0 を返し、people[0]people[1]は未定義です。

そこにある、全部あるのはわかっているが、どこにあるかを見つけるのに非常に苦労している。

4

3 に答える 3

2

peopleajax イベントが発生したにのみ値を取得します。

peopleデータを配列に入れたら、コールバック関数を呼び出します。

于 2013-01-29T17:51:46.880 に答える
1

これを試してください:http://jsfiddle.net/hUq7k/

$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
    $.each(data, function(i, people){
       console.log(people.id); //<------this should output "1, 2"
    });
});

を取得していることを確認してくださいresponse data

于 2013-01-29T17:52:33.500 に答える
0

サーバーが実際に期待されるJSONを返している場合は、次のように機能するはずです。

$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
    var people = data;
    alert("people.length: " + people.length);
    if (people.length > 0) {
        alert("people[0].id: " + people[0].id);
    }
});

$ .getJSONは非同期メソッドであり、このコードはAJAX操作が完了する前にアクセスしようとしているため、以下は機能しないpeopleはずです。つまり、機能します。undefinedpeople

var people;
$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
    people = data;
});

alert("people.length: " + people.length);
if (people.length > 0) {
    alert("people[0].id: " + people[0].id);
}
于 2013-01-29T17:51:40.120 に答える