如何创建全局变量的查询和可用的javascript

How to create global variable in query and usable with javascript

本文关键字:查询 javascript 全局变量 何创建 创建      更新时间:2023-09-26
$(document).ready(function () 
{
    $.ajax(
    {
        url: "Bibliotheek.xml",
        dataType: "xml",
        success: function (data) 
        {
            var song = $(data).find('key').filter(function () 
            {
                return $(this).text().indexOf('Name') != -1;
            }).each(function() 
            {
                window['globalVar']= $(this).next('string').text();
                console.log(globalVar);
            });
        }
    });
});

我想在每个循环之外使用globalVar。但是一旦我把de console.log放在函数外面。它告诉我的globalVar未定义。是否也可以在javascript代码中使用该变量?

这可能发生,因为你在一个空列表上循环(即它永远不会进入.each回调)。这个东西是错误的:.find('key')。它搜索一个key标签(这不是HTML,除非你实际上不处理HTML?)。也许您正在寻找.find('.key') ?

EDIT:似乎您想将console.log置于ajax调用之外。如果您这样做了,那么您就不走运了,因为您正在尝试记录一个还不存在的变量。这是因为ajax中的代表异步,即这段代码将稍后运行。

EDIT 2:欢迎学习异步编程!似乎您试图强制ajax是同步的,这是错误的,而且是纯粹的邪恶。不要这样做。你的代码应该像这样:

var my_fn = function(clb) {   // <-- this is callback to be called later
    var els = [];
    $.ajax({
        url: "Bibliotheek.xml",
        dataType: "xml",
        success: function (data) {
            var song = $(data).find('key').filter(function () {
                return $(this).text().indexOf('Name') != -1;
            }).each(function() {
                var el = $(this).next('string').text();
                els.push(el);
            });
            clb(els);   // <-- call it now
        }
    });
};
$(document).ready(function() {
    my_fn(function(els) {
        console.log(els);
        // do coding here
    });
});

在函数之外定义globalVar

var globalVar;
var song = {...
     console.log(globalVar);//will work here   
 };
console.log(globalVar);//and, will work here