延迟ajax成功,jQuery

时间:2013-03-08 18:13:11

标签: 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);的执行时间?

更新

当我通过绑定到按钮点击事件来运行它时,分配工作正常

--------------------------------------- < / p>

UPDATE2

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()函数。它适用于点击,但不会产生其他一些后果(我的意思是不会将消息加载到combonews)

感谢你

1 个答案:

答案 0 :(得分:1)

@Adam这是我找到的唯一解决方案,我将你的评论作为答案

为简单起见,请在您的ajax请求之后获取所有代码,并将其全部放入您的完整功能中。在ajax请求完成之前,您正尝试使用变量“combonews”执行某些操作。 - 亚当

但我使用complete

代替success

感谢大家