自从我使用查询以来已经有一段时间了,我不能为我的生活弄清楚为什么这不等待响应。我寻找类似于this post的答案。我必须错过一些非常简单的事情。
调用函数:
$('#cappuccino-button').click(function () {
$('#screen-one').hide();
var hasMilk = IsThereMilk();
if (hasMilk) {
$('#cappuccino-success').show();
} else {
$('#milk-fail').show();
}
}
功能本身:
function IsThereMilk() {
$.ajax({
url: 'http://milkstore/gotany',
type: 'GET',
async: false,
success: function(data){
console.log('*****AJAX' + data.hasMilk);
return data.hasMilk;
}
});
}
任何人都可以帮我确定为什么我的调用函数没有等待ajax请求吗?
答案 0 :(得分:1)
IsThereMilk()
调用实际上不会返回值。虽然如果返回$.ajax()
,则该值将是jQuery promise对象,而不是Boolean
。
尝试从js
来电return
来调整$.ajax()
,IsThereMilk()
.then()
,以检查回复是否data.hasMilk
function IsThereMilk() {
return $.ajax("http://milkstore/gotany");
}
$("#cappuccino-button").click(function () {
$("#screen-one").hide();
var hasMilk = IsThereMilk();
hasMilk.then(function(data) {
if (data.hasMilk) {
$("#cappuccino-success").show();
} else {
$("#milk-fail").show();
}
})
})
jsfiddle https://jsfiddle.net/r8hc6nna/
答案 1 :(得分:0)
您是否尝试过ajax成功移动条件hasMilk?
function IsThereMilk() {
$.ajax({
url: 'http://milkstore/gotany',
type: 'GET',
async: false,
success: function(data){
console.log('*****AJAX' + data.hasMilk);
if (data.hasMilk) {
$('#cappuccino-success').show();
} else {
$('#milk-fail').show();
}
}
});
}
$('#cappuccino-button').click(function () {
$('#screen-one').hide();
IsThereMilk();
}
答案 2 :(得分:0)
jQuery when
可用于实现相似的结果。
这是我编写的使用when
$.when( loadMoreComms() ).then(function( data, textStatus, jqXHR ) {
{#var comsect = $('#comment-box-section');#}
$('.loader').css('display', 'none');
});
这是我的loadmoreComms()
function loadMoreComms() {
return $.ajax({*put you ajax code here*});
}
详细了解jquery when
here