var list = [];
$.getJSON("json.js", function(data) {
$.each(data, function(i, item) {
console.log(item.text);
list.Push(item.text);
});
});
console.log(list.length);
list.length
は常に0を返します。FirebugでJSONを参照しましたが、整形式であり、すべて正常に見えます。何が欠けているのか、配列にアイテムを追加できないようです。
$.getJSON
は非同期であるため、配列にデータが入力される前にconsole.log(list.length);
コードが実行されると思います。これを修正するには、コールバック内にconsole.log
ステートメントを追加します。
var list = new Array();
$.getJSON("json.js", function(data) {
$.each(data, function(i, item) {
console.log(item.text);
list.Push(item.text);
});
console.log(list.length);
});
非同期のajaxリクエストを作成しているため、ajaxリクエストが完了する前にリストの長さのコンソールログが発生します。
目的を達成する唯一の方法は、ajax呼び出しを同期に変更することです。これを行うには、.ajaxを使用してasynch:falseを渡しますが、呼び出しが返されるまでUIをロックするため、ユーザーがブラウザーからクラッシュする必要がある場合は返されないため、これはお勧めできません。
これがあなたを助けることを願っています。
var list = [];
$(document).ready(function () {
$('#test').click(function () {
var oRows = $('#MainContent_Table1 tr').length;
$('#MainContent_Table1 tr').each(function (index) {
list.Push(this.cells[0].innerHTML);
});
});
});