0

我有将表单值发布到 url 的按钮,但在发布期间我也想将该值捕获到我的数据库中。所以在按钮单击时,我创建了新的 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;
4

1 回答 1

3

真的不应该那样做。主动等待可能会阻止整个浏览器或至少阻止当前选项卡。

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

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

于 2012-06-16T10:37:50.633 回答