كيف يمكنني إضافة عناصر إلى صفيف في مسج؟
سؤال
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. لقد تصفحها 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 ويمر في asynch: كاذبة ولكن لا ينصح بذلك لأنه يؤمن 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);
});
});
});