从html文件中引用javascript数组

时间:2018-05-27 21:34:39

标签: javascript html ajax

我对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');
        }
    });
}); 

谁能告诉我我做错了什么以及如何修复它们?非常感谢!!!

1 个答案:

答案 0 :(得分:1)

首先将代码放在一个函数中,然后调用某个事件。如果你想在AJAX调用之后处理你的数组,那么在AJAX成功之后调用该函数。浏览器从上到下呈现HTML,因此只要浏览器碰到脚本,HTML中的脚本就会运行。另一方面,jQuery on ready将等待所有页面内容完全加载(所有图像,资源等) - 整个DOM,因此您的数组将保持未定义。 您可以通过将代码从HTML移动到jQuery ready函数或通过在HTML中移动数组声明来修复它。 无论如何,如果HTML中的脚本应该在文档准备就绪时运行,那么将javascript代码从HTML移到jQuery就绪函数更合理。