为啥我的 Ajax 发布请求在表单提交中被阻止?

Posted

技术标签:

【中文标题】为啥我的 Ajax 发布请求在表单提交中被阻止?【英文标题】:Why my Ajax post request is blocking in form submit?为什么我的 Ajax 发布请求在表单提交中被阻止? 【发布时间】:2010-10-22 19:32:26 【问题描述】:

场景:在 html 输入控件的 onblur 事件中,我将异步 HTTP 帖子发送到资源,即 t.aspx。

我不关心它是否会返回,但是,如果用户单击提交,我希望表单提交。

我从使用我们的模拟器中看到的是,当我将 t.aspx 减慢到需要 10 秒(page_load Thread.Sleep(10000))时,当我单击提交时,它会继续等待 10 秒的剩余时间,然后提交。

我需要立即提交表单。下面是一个sn-p的ajax代码

var _requestData = " " + "\"subject\":  " + "\"param1\": \"" + $("#param1").val() + "\", " + "\"param2\": \"" + $("#param2").val() + "\" " + "" + " ";

$.ajaxSetup(
    url: "t.aspx",
    type: "POST",
    processData: false,
    contentType: "application/json",
    dataType: "json",
    success: sucessfulCallback,
    error: unsucessfulCallback
);

$.ajax(
    data: _requestData
);

我也尝试过var myAjax = $.ajax .....并在表单提交中调用myAjax.abort()。那里也没有运气。

任何帮助将不胜感激......

问候 大卫

【问题讨论】:

【参考方案1】:

您没有提及您正在运行的 Jquery 版本。旧版本有一个已知错误,正如您所描述的那样:http://dev.jquery.com/ticket/2935。

【讨论】:

【参考方案2】:

在服务器端,您需要检查用户是否仍然与服务器连接。通过使用以下命令。

if (!Response.IsClientConnected)

   // process user request

【讨论】:

以上是关于为啥我的 Ajax 发布请求在表单提交中被阻止?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery.Validate 插件可以阻止提交 Ajax 表单吗

为啥我的 api ajax 请求未定义?

无法通过 onSubmit 属性触发的 Ajax 响应阻止表单提交。

为啥 POST 不支持字符集,但 AJAX 请求可以?雄猫 6

为啥 Google ReCaptcha 不阻止提交表单?

Ajax 请求和会话