带有超时的jQuery同步表单提交

时间:2014-04-09 22:56:11

标签: javascript jquery forms synchronous

我正在尝试将表单提交到准备接收它的外部站点,但是当外部站点完成并且导致我的站点卡住等待而没有响应时,只有使用form.submit()

我写了以下内容来尝试处理这个问题,但是没有抛出超时。

$.ajax({
      async: false,
      url: url,
      data: $('#tppForm').serialize(),
      type: 'POST',
      timeout: 5000,
      statusCode: {
         404: function() {
            console.log('Site Not Found');
         },
         500: function() {
            console.log('Site Down');
         }
      },
      error: function() {
         console.log('Timeout');
      }
});

1 个答案:

答案 0 :(得分:1)

我检查了jQuery documentation以及其他来源,timeout:没有明确指定async:false的行为。

我的建议是将其更改为async:true,以更好地处理远程(网络)呼叫的不可预测性。请参阅jquery ajax() async falsejQuery ajax success anonymous function scope

这会将挑战更改为您的客户端(浏览器)必须准备好"准备好"状态标志,可以向用户指示他们应该等待并阻止重叠呼叫。我个人喜欢改变提交按钮文本/颜色以供用户反馈。在进行AJAX调用之前,您还应检查状态标志以确保没有待处理的操作。