是否可以将多个ajax函数绑定到ajax成功调用?
例如,我有以下代码:
$('#deals').each(function() {
var city_slug = $(this).data('city');
$(".dealloader").show();
//load deals
setTimeout(loadDeals, 3000);
});
loadDeals function =
function loadDeals() {
var city_slug = $("#deals").data("city");
//var position = $(this).position();
$.ajax({
cache: false,
type: "POST",
url: "get_deals.php",
data: {'city' : city_slug},
success: function(html) {
showYelpStars(function() {
$('.dealloader').hide();
$('#deals').append(html);
});
}
}).done(function( msg ) {
//
});
}
yelp Stars Function =
function showYelpStars(callback){
$('.yelpreviews').each(function() {
var passurl = $(this).data('yelpurl');
var passname = $(this).data('name');
var passstreet = $(this).data('address');
var passcity = $(this).data('city');
var passstate = $(this).data('state');
var passreview = $(this).data('yelp');
if (passreview.val = '1' && passname !== ""){
$(this).load('yelpreviews.php', {yelp: passreview, name : passname, address : passstreet, city : passcity, state : passstate} );
}
});
callback();
}
函数showYelpStars在成功调用中正确触发,但是,它是对yelp的实时API调用,需要几秒钟才能获得完整的结果,页面上的所有内容都被加载,几秒钟之后就会出现yelp响应进来。我正在试图弄清楚如何保持我的装载机显示,直到一切都恢复成功 提前谢谢!
答案 0 :(得分:2)
我相信你可以使用.ajaxSuccess(function () {})
添加多个函数,或者你可以在匿名函数中调用多个函数:
success: function(html){
run_function_one(html);
run_function_two(html);
}
.ajaxSuccess()
的文档:http://api.jquery.com/ajaxSuccess/
<强>更新强>
一般来说,如果你想在进行AJAX调用时显示加载消息,有两种简单的方法可以做到:
$.ajax({
beforeSend : function () {/*show loading message now*/},
success : function () {/*hide loading message now*/}
});
OR
/*show loading message now*/
$.ajax({
success : function () {/*hide loading message now*/}
});
在旁注中,您正在按ID选择一个元素,该元素保证只返回一个结果,但您在该选择上调用.each()
。您不需要.each()
,或者您应该更改选择器以选择实际上可能是多个元素的内容。
答案 1 :(得分:1)
在showYelpStars函数中实现回调:
function showYelpStarts(callback) {
//Your other code here that loads the Yelp stars
callback();
}
然后在你成功的回调中:
success: function(html) {
showYelpStars(function() {
$('.dealloader').hide();
$('#deals').append(html);
});
}