我有以下JS功能:
function getInfo(s,n) {
$.ajax({
type : 'POST',
url : 'includes/stock_summary.php',
timeout : 10000,
data : {
s : s
}
})
.done(function(data) {
function IsJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
alert("Unable to communicate with Yahoo! Finance servers. Please try again later.");
}
return true;
}
$.ajax({
type : 'post',
url : "includes/stock_desc.php",
data : {
s : s
}
})
.done(function(desc) {
$('#desc').html(desc);
})
if(data.change.charAt(0) == '+') {
$('#change').css('color','#090');
$('#puPrc').html('<img src="images/pu_prc_up.png"> ');
}
if(data.change.charAt(0) == '-') {
$('#change').css('color','#D90000');
$('#puPrc').html('<img src="images/pu_prc_dwn.png"> ');
}
var ask = data.ask+" <small>x "+data.askSize+"</small>";
var bid = data.bid+" <small>x "+data.bidSize+"</small>";
var change = data.change+" ("+data.changePc+")";
$('#ask').html(ask);
$('#lt').html(data.lastTrade);
$('#ytd').html(data.ytdReturn);
$('#bid').html(bid);
$('#dayHigh').html(data.dayHigh);
$('#dayLow').html(data.dayLow);
$('#prevClose').html(data.prevClose);
$('#vol').html(data.vol);
$('#yearHigh').html(data.yearHigh);
$('#yearLow').html(data.yearLow);
$('#change').html(change);
$('#stockName').html(n);
$('#sym').html(s.toUpperCase());
$('#open').html(data.sOpen);
})
.fail(function(e) {
alert("Unable to communicate with Yahoo! Finance servers. Please try again later.");
})
$('#chart').html("<img src='http://chart.finance.yahoo.com/z?s="+s+"&t=3m&q=l&l=on&z=m'>");
$('.popUp').bPopup();
}
使用onClick()调用它。
该功能本身可以正确完成工作,但我只想触发该行:
$('.popUp').bPopup();
其他一切都已完成。
我使用了$.ajaxStop()
,$(document).ajaxStop()
,$.ajaxComplete()
和$(document).ajaxComplete()
我已经在功能的内部,外部,上方和下方尝试了它们,但似乎无法让它做到我需要的东西!
它唯一有效的时间是在函数之外但它然后在页面加载时运行,我显然不希望发生这种情况。我只希望它在函数完成时运行。
如果有人可以帮我解决这个问题,请帮忙!
答案 0 :(得分:0)
如果您只有一个ajax调用,则需要添加.always
处理程序,该处理程序将在所有.done
和.fail
处理程序完成后执行。
.always(function() {
$('.popUp').bPopup();
});
如果您的网页上有多个ajax调用,并且您希望在完成所有调用后触发代码,请使用ajaxStop
事件。
$(function() {
$(document).on('ajaxStop', function() {
$('.popUp').bPopup();
});
});