无法声明Global var outside函数

时间:2013-01-02 04:00:09

标签: jquery global var

尽我所能,我无法通过全局变量获取我的数据。我已经尝试了所有我能想到的东西,包括window.nuTime没有成功。

$.ajax({
    cache: false,
    type: 'POST',              
    url: 'servertime.asp',
    data: {},
    success:    function (data) {
                $('#servertime').html(data);
                window.nuTime = data;
                //alert(data);
                },
    error:      function (jxhr, msg, err) {
                $('#response').append('<li style="color:red">' + msg + '</li>');
                }
    });

alert(nuTime);

2 个答案:

答案 0 :(得分:3)

Kolink是对的!你可以这样改进:

$.ajax({
    cache: false,
    type: 'POST',              
    url: 'servertime.asp',
    data: {},
    success:    function (data) {
                    $('#servertime').html(data);
                    alertNuTime(data);
                },
    error:      function (jxhr, msg, err) {
                    $('#response').append('<li style="color:red">' + msg + '</li>');
                }
    });

function alertNuTime(data) {
    alert(data);
}

答案 1 :(得分:2)

调用alert(nuTime)时,AJAX尚未返回。依赖于结果的任何东西必须在成功处理程序内(或由所述处理程序调用)

编辑:你可以实现这样的“延迟”:

function someFunctionThatDependsOnAjaxBeingDone(arg1,arg2,arg3) {
    if( typeof nuTime === "undefined") {
        var t = this, ac = arguments.callee, arg = arguments;
        setTimeout(function() {ac.apply(t,arg);},100);
    }
    else {
        // normal function stuff here
    }
}

但是,除非您手动将arguments转换为数组,否则这在某些浏览器中不起作用,并且返回值也无效。