像thread.sleep()一样延迟到ajax响应

时间:2012-06-16 10:31:11

标签: javascript jquery

我有按钮,将表格的值发布到网址,但在帖子中我想将该值也捕获到我的数据库中。 所以在按钮上单击我创建了ajax的新线程并暂停while循环,因此用户无法重定向,因为表单的帖子。

但问题是程序在while循环中没有响应而没有发布ajax调用。

function btnSubmitId_Onclick() {

    window.setTimeout(function () {

        var FirstName = $(txtFirstNameId).val()
        var Email = $(txtEmailId).val()

        AJAXPost(   //Url
                "Signup"
                , //Data
                {Ip: Ip, CustomerKey: CustomerKey, FirstName: FirstName, Email: Email }
                , //Success
                function (data) {
                    response2 = true;
                }
                , //error
                function (xhr, textStatus, errorThrown) { }
            );

    }, 0);


    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while (response2 == false)

}

var response2 = false;

1 个答案:

答案 0 :(得分:3)

真的不应该这样做。主动等待可能会阻止整个浏览器或至少阻止当前标签。

在成功回调请求成功后,将所有需要运行的代码放入。

由于你显然想要正常提交表单使用AJAX(为什么?!),解决方案相当简单:通过调用{{1来阻止浏览器处理原始提交(e.preventDefault()是传递给jQuery事件处理程序的第一个参数)并且在AJAX请求成功e表单之后。为了避免再次发送AJAX请求,您可能需要取消绑定提交事件处理程序或在AJAX请求完成后设置变量。