我被一些简单的事情困住了。当我发出 ajax 请求时,由于某种原因,它没有足够的时间来对 combonews
变量进行赋值:
jQuery.ajax({
type: "POST",
url: "People.aspx/LoadComboNews",
data: "{\"id\":" + usrid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
combonews = '';
setTimeout(function () { combonews = eval(msg.d); }, 500);
//combonews = eval(msg.d);
}
});
尝试添加如图所示的 setTimeout,但当我想提醒 combonews
时,它仍然是空的。
当我发出警报 msg.d
时,它总是准备好数据。
有没有办法延长 combonews = eval(msg.d);
的执行时间?
更新:
当我通过绑定(bind)到按钮单击事件来运行它时,分配工作正常
----------------------------------------------------------------
更新2
function lcombo() {
jQuery('#combostart ~ option').remove();
//setTimeout((function () {
jQuery.ajax({
type: "POST",
url: "People.aspx/LoadComboNews",
data: "{\"id\":" + usrid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function (msg) {
// Replace the div's content with the page method's return.
combonews = '';
//setTimeout(function () { combonews = eval(msg.d); }, 500);
combonews = JSON.parse(msg.d);
}
});
//combonews = eval(combonews);
//alert(combonews);
jQuery(".chzn-select").chosen();
jQuery(".chzn-select-deselect").chosen({ allow_single_deselect: true });
var str = "";
if (combonews.length > 0)
for (var i in combonews) {
str += "<option value='" + combonews[i][0] + "'>" + combonews[i][1] + "</option>";
}
jQuery("#combooptions").append(str);
jQuery("#combooptions").val(draftid);
jQuery("#combooptions").trigger("liszt:updated");
}
然后我加载 lcombo() 函数。它适用于点击,但不会产生其他后果(我的意思是不会将消息加载到组合新闻)
谢谢你
最佳答案
@Adam 这是我找到的唯一解决方案,我将您的评论作为答案
为了简单起见,请在 ajax 请求之后获取所有代码,并将其全部放入完整的函数中。在 ajax 请求完成之前,您试图对变量“combonews”执行某些操作。 – 亚当
但是我使用了成功
而不是完整
谢谢大家
关于javascript - 延迟ajax成功,jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15300569/