如何在jQuery/JavaScript中设置全局变量?

如何在jQuery/JavaScript中设置全局变量?,jquery,Jquery,我有一个ajax函数: $.ajax({ url: 'http://localhost/process.php', type: 'post', data: '', success: function(output) { var animal = output } }); 我希望对var animal进行全局设置,这样我就可以在页面上的任何地方调用它,甚至在ajax函数的成功回调之外。如何做到这一

我有一个ajax函数:

    $.ajax({
        url: 'http://localhost/process.php',
        type: 'post',
        data: '',
        success: function(output) {

var animal = output

        }
    });

我希望对
var animal
进行全局设置,这样我就可以在页面上的任何地方调用它,甚至在ajax函数的成功回调之外。如何做到这一点?

在任何函数或jQuery构造之外声明它

var animal = null;

$(function(){
    $.ajax({
        url: 'http://localhost/process.php',
        type: 'post',
        data: '',
        success: function(output) {
            animal = output
        }
    });
});

在任何函数或jQuery构造之外声明它

var animal = null;

$(function(){
    $.ajax({
        url: 'http://localhost/process.php',
        type: 'post',
        data: '',
        success: function(output) {
            animal = output
        }
    });
});

如果希望它是全局变量,则将其声明为全局变量。一般来说,你可以通过

var animal;

在.js文件的顶部。然后,代码中对
动物
的任何引用都将是全局变量,除非在范围中的其他地方重复使用该名称。

如果希望它是全局变量,则将其声明为全局变量。一般来说,你可以通过

var animal;

在.js文件的顶部。然后,代码中对
animal
的任何引用都将是全局变量,除非您在范围中的其他地方重复使用该名称。

删除
var
,使变量成为全局变量


但是请注意,使用globals通常被视为不好的做法,因为它们很难调试

删除
var
,使变量成为全局变量


但是请注意,使用globals通常被视为不好的做法,因为它们很难调试

如果您想动态执行此操作

$.globalEval( 'var animal = ' + output );
jQuery.globalEval()

此方法的行为与使用普通JavaScript eval()不同,因为它是在全局上下文中执行的(这对于动态加载外部脚本很重要)


如果你想动态地做

$.globalEval( 'var animal = ' + output );
jQuery.globalEval()

此方法的行为与使用普通JavaScript eval()不同,因为它是在全局上下文中执行的(这对于动态加载外部脚本很重要)


IE doenst始终定义这些变量,以便在IEIE中获取一些错误。IE doenst始终定义这些变量,以便在IEIE中获取一些错误。请记住,
$。ajax
调用是异步的。我能感觉到拐角处有一个“为什么动物没有定义?”;o)
console.log(动物类型)//可能由于未初始化而返回undefined。请记住,
$。ajax
调用是异步的。我能感觉到拐角处有一个“为什么动物没有定义?”;o)
console.log(动物类型)//由于未初始化,可能返回undefined。我的答案有问题吗?你为什么要投反对票?我的答案有问题吗?你为什么要投反对票?