正确的方法来执行ajax同步POST然后提交表单

时间:2016-03-22 18:03:33

标签: javascript jquery ajax

我已经获得了ASP提交按钮

<asp:button runat="server" Text="Submit" id="btnSubmitOrder" OnClientClick="return SubmitOrder()" />

我的Javascript函数SubmitOrder()需要执行POST,然后根据POST的成功,允许表单提交(返回true)或取消它(返回false)

function SubmitOrder() {

    $.ajax({
        async: false,
        type: 'POST',
        url: strURL,
        data: arrKeyVal,
        contentType: 'application/json',
        success: function (data) {
            if (data.results.count > 0) {
                return true;
            } else {
                return false;
            }
        },
        error: function (jqXHR, exception) {
            return false;
        }
    });

}

我担心的是,由于现在已弃用,因此可能很快就会过时。

  

主线程上的同步XMLHttpRequest因不推荐使用   它对最终用户的体验产生不利影响。如需更多帮助,   检查https://xhr.spec.whatwg.org/

那我该怎么处理呢?知道我需要在允许表单提交之前等待响应。

2 个答案:

答案 0 :(得分:1)

您只能同步取消活动。一种选择是不将gulp-watch附加到表单提交事件,而只是创建一个单击处理程序,然后在您的ajax回调中实际提交表单。

SubmitOrder

...或者您可以执行表单的Ajax提交,而不是常规的HTML表单提交。

答案 1 :(得分:0)

function SubmitOrder() {
    event.preventDefault();
    $.ajax({
        context: this,
        type: 'POST',
        url: strURL,
        data: arrKeyVal,
        contentType: 'application/json',
        success: function (data) {
            if (data.results.count > 0) {
                $('form').submit();
            } else {
                return false;
            }
        },
        error: function (jqXHR, exception) {
            return false;
        }
    });
}

编辑:此功能尚未引用表单,因此您需要选择表单然后调用submit。