Javascript jQueryAjax请求只在第二次调用时返回值

Javascript jQueryAjax请求只在第二次调用时返回值,javascript,jquery,ajax,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); } $('but

我试图使用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
记录到控制台,然后如果我再次单击,它会返回预期值


什么会导致这种情况?我如何修复它以在第一次调用它时返回预期值?

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);

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);

我很惊讶它会返回任何东西,你的语法全错了,而且它是异步的!我甚至不愿提及它,但您可以通过在
$.ajax
选项中设置
async:false
来实现同步。但是你几乎不应该这样做。我很惊讶它可能会返回任何东西,你的语法全错了,而且它是异步的!我甚至不愿提及它,但您可以通过在
$.ajax
选项中设置
async:false
来实现同步。但是,您几乎不应该这样做。可能重复的