1

尽我所能尝试我无法使用全局变量在函数之外获取我的数据。我已经尝试了所有我能想到的方法,包括 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);
4

2 回答 2

3

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

$.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);
}
于 2013-01-02T04:09:22.657 回答
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为数组,否则这在某些浏览器中不起作用,并且它也不能与返回值一起正常工作。

于 2013-01-02T04:02:44.237 回答