在表单提交之前验证连接

时间:2013-03-08 21:53:28

标签: jquery ajax forms

我正在尝试在表单提交之前验证用户的互联网连接,以便我的JavaScript验证功能可以抛出警报并在没有连接时返回false。

我试过了: navigator.onLine - 在FF中不起作用(仅查看浏览器是否处于“离线模式”)

AJAX请求到我自己的网站:

$.ajax({  
  type: "GET",  
  url: "internet_test.php",  
  async: false, //trying to force a response before continuing
  timeout:8000,
  success: function(ret_text) {
    if(ret_text == 'yes') {
      return true;
    } else {
      alert("No Connection 1");
      return false;
    }
  },
  error: function(x, t, m) {
    if(t==="timeout") {
      alert("No Connection 2");
      return false;
    } else {
      alert("No Connection 3");  //this is the one triggered
      return false;
    }
  }
});

我收到第三种错误的警报,但是表单仍然会提交。我猜这个错误会覆盖我试图指定同步检查的事实,并且JavaScript验证器在AJAX返回false之前完成。

这有什么好方法吗?更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我会这样:

  1. 将“提交”更改为“按钮”(或链接) - 它将停止提交表单。
  2. 点击此按钮进行AJAX调用,如果一切正常,则make form.submit();
  3. 这只是一个草稿,一切都可以变得更加用户友好,对于非js浏览器来说更加健壮等。