javascript - 从 html 文件中引用 javascript 数组

标签 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');
        }
    });
}); 

谁能告诉我我做错了什么以及如何解决这些问题?非常感谢!!!

最佳答案

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

关于javascript - 从 html 文件中引用 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50556710/

相关文章:

python - Django应用程序中API调用的问题

javascript - Callback() Node Js

javascript - clearInterval 在 javascript chrome 扩展中不起作用

javascript - 如何检测 HTML 中的可点击链接

javascript - 使用 ajax get 方法提交表单以使用 XMLhttprequest 获取响应

javascript - 从 AJAX GET 获取 HTML 值

javascript - 如果使用 sessionStorage 结束,如何保持动画的状态直到 session 结束?

javascript - 如何在php中创建一个自动任务?

html - iPhone SE 无法正确显示响应表标题,但可以在 Android 上运行

php - 通过 PHP 在电子邮件中发送 HTML 页面