2016-11-28 6 views
1

イムこの作品を作る少し問題がある:ここでのjQuery、JSONアレイプッシュ

は私のJSON配列は、Ajax経由で引っ張られ:ここ

{ 
    "message": [{ 
     "title": "Account", 
     "id": 1 
    }, { 
     "title": "Content", 
     "id": 2 
    }, { 
     "title": "Other", 
     "id": 3 
    }] 
} 

はjavascriptのです:

var items = []; 
$.get("settings.php", { 
     getlink: 1, 
    }, function(json) { 
     $.each(json.message, function() { 
      items.push(this); 
     }); 

},"json"); 

console.log(items) 

だがについていくつかの理由アイテムの配列は常に空です[] 私は火かき棒で見ることができます、jsonは配列を返しましたが、私はそれを押すことができません。

+0

get要求が終了する前にconsole.logが起きているかもしれない、それが働いたかどうかをテストするためにタイムアウトを追加してみてください。 – jmona789

+0

不完全なセクションを追加し、そこにconsole.logを置きます。 – nurdyguy

答えて

3

使用$.eachが復帰index, valueこと:

$.each(json.message, function(index, value) { 
    items.push(value); 
}); 

注:$.each().each()とは異なります。

これが役に立ちます。

+0

さて、私は今問題が見えます。私がconsole.log(items)を置くと; ajax get内で結果を見ることができますが、私はAjax呼び出しの外にある項目配列にアクセスしたいと考えています。 – Alko

+0

はい、 '$ .get()'が非同期であるため、すぐに結果にアクセスできませんでした。[非同期呼び出しからの応答を返すにはどうすればいいですか?](http://stackoverflow.com/questions/ 14220321/how-do-i-return-from-as-asynchronous-call)を使用して、 –

2

$.each関数にparamsを渡し、そのオブジェクトを配列にプッシュする必要があります。

var json = { 
 
    "message": [{ 
 
     "title": "Account", 
 
     "id": 1 
 
    }, { 
 
     "title": "Content", 
 
     "id": 2 
 
    }, { 
 
     "title": "Other", 
 
     "id": 3 
 
    }] 
 
} 
 

 
var items = []; 
 
$.each(json.message, function(index, item) { 
 
    items.push(item); 
 
}); 
 

 
console.log(items)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>