我对ajax数组有疑问。我在javascript文件中创建了两个数组,如下所示。
$(document).ready(function () {
categoryarray = [];
productarray = [];
然后,如果我想从另一个javascript文件引用这些数组,html中的脚本遵循创建两个数组的javascript文件的脚本,但它没有显示任何内容,甚至没有显示控制台报告错误。 下面是我在另一个javascript文件中引用该数组的方法,它没有用。
$(document).ready(function () {
$.ajax({
type: 'GET',
url: 'my_script.js',
success: function(data) {
for(var k=0;k<categoryarray.length;k++){
if(categoryarray[k][0]!==""){
$('.tree').append('<li id="Cate_' + k + '">'+categoryarray[k][1]+'</li>');
for(var l=0;l<productarray.length;l++){
if(categoryarray[k][0]==productarray[l][2]){
$('#Cate_' + k).append('<ul id="Pro_' + l + '"></ul>');
$('#Pro_' + l).append("<li>"+productarray[l][1]+"</li>");
}
}
}
}
},
error: function() {
$('.tree').text('Failed to load the data');
console.log('Error');
}
});
});
谁能告诉我我做错了什么以及如何修复它们?非常感谢!!!
答案 0 :(得分:1)
首先将代码放在一个函数中,然后调用某个事件。如果你想在AJAX调用之后处理你的数组,那么在AJAX成功之后调用该函数。浏览器从上到下呈现HTML,因此只要浏览器碰到脚本,HTML中的脚本就会运行。另一方面,jQuery on ready将等待所有页面内容完全加载(所有图像,资源等) - 整个DOM,因此您的数组将保持未定义。 您可以通过将代码从HTML移动到jQuery ready函数或通过在HTML中移动数组声明来修复它。 无论如何,如果HTML中的脚本应该在文档准备就绪时运行,那么将javascript代码从HTML移到jQuery就绪函数更合理。