Javascript jQueryAjax请求只在第二次调用时返回值
我试图使用jQuery的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
$.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
来实现同步。但是,您几乎不应该这样做。可能重复的