jQuery ajax请求仅在第二次调用时返回值

时间:2014-04-16 12:47:36

标签: javascript jquery ajax

我试图使用jQuery的$.ajax方法从php获取数据。

这是我现在的代码:

var ajaxresult = null;
function myFunc() {
    $.ajax('ajaxtest.php',{
    type: 'get',
    data: '',
    success: function(data) {
        ajaxresult = data;
    }
    });
    console.log(ajaxresult);
}

$('button').click(function(){
myFunc();
})

我的问题是:

我第一次调用myFunc()(当我点击按钮时)它会将null记录到控制台,之后如果我再次点击它会返回预期值。

可能导致此问题的原因以及我如何修复它以在第一次调用时返回预期值?

1 个答案:

答案 0 :(得分:4)

Ajax是异步的,因此第一次单击时,控制台日志会在ajax调用完成之前发生,并记录null

第二次点击时,同样的事情发生了,但是变量是全局的,所以它现在保存了前一个ajax调用的值,并记录了以前记录的值,来自上一个的值呼叫,而不是当前呼叫的值。

看起来应该更像这样,数据仅在回调中可用

function myFunc() {
    $.ajax({
        url  : 'ajaxtest.php',
        type : 'GET',
        data : '',
        success: function(data) {
            var ajaxresult = data;
            console.log(ajaxresult);
        }
    });
}

$('button').click(myFunc);