4

私はjavascriptとjqueryの開発にかなり慣れていません。PHPでフェッチしてJSON文字列としてフォーマットしている値のテーブルがあります。これは、JSONがデータをJavaScriptに取り込むための優れた方法のように見えるためです。しかし、javascript変数のアドレス指定に問題があります。

JSONデータは非常に単純な形式です。次のようになります。

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

等々。複雑なエントリはありません。それは単なるデータのフラットな行です。

JQueryの$.getJSON()を使用して、次のような変数にデータを配置しています。

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

console.log(data)によると、オブジェクト'data'にJSON文字列の内容が入力されています。しかし、プッシュはjavascriptコンソールでこれらのエラーを生成しています:

Uncaught TypeError: Cannot read property 'length' of undefined
Uncaught TypeError: Cannot call method 'push' of undefined

私は何が欠けていますか?そして、これについて私を助けるためにあなたが必要とする他の情報はありますか?私はこの問題のためにこのプロジェクトを中止しました、そして私はそれを理解するにはあまりにも多くのjavascript初心者です。

4

5 に答える 5

3

変数 people は配列でなければなりません。最初の行を次のように変更します

var people = [];

現時点では、「人」は未定義であり、.push() メソッドは配列でのみ機能します。

于 2013-01-26T15:00:30.030 に答える
2

PHPが次のように出力を書き込む場合:

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

その構造全体を以下に割り当てる必要がありますpeople

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

// note that you can't access anything inside people here
// only when the json has been processed
于 2013-01-26T15:10:27.513 に答える
1

変数にプッシュする前に、変数を配列として定義してみてください。

var people = new Array();
于 2013-01-26T14:58:28.340 に答える
1

people 変数を配列として初期化してみてください

var people = []
于 2013-01-26T15:00:33.737 に答える
1

これを試すことができます:

$.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON
  $.each(data, function(i, people){
     console.log(people);
  });
});    
于 2013-01-26T16:09:42.027 に答える