javascript - 延迟ajax成功,jQuery

标签 javascript jquery

我被一些简单的事情困住了。当我发出 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/

相关文章:

JavaScript Json 解析器

javascript - 如何使用经典 ASP 在服务器端包含 javascript 文件?

jquery - 为什么我无法将 'div' 的背景颜色更改为 'yellow'

javascript - 如何检测tinymce 4中菜单何时呈现?

jquery - 在 jQuery ReplaceWith() 函数中使用 <div class ="something">

javascript - JQuery 选择器内的变量

javascript - html post 和 js http.post 的区别

javascript - 如何确定所有文件已被读取并解决 promise

javascript - 尝试使用 .each() 获取 li 的内容

jquery - IE7 中的 Z-INDEX 问题