jquery – 在表单提交之前验证连接

我正在尝试在表单提交之前验证用户的Internet连接,以便我的
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之前完成.

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

谢谢!

最佳答案 我会这样走:

>将“提交”更改为“按钮”(或链接) – 它将停止提交表单.
>单击此按钮进行AJAX调用,如果一切正常,则make form.submit();

这只是一个草稿,一切都可以变得更加用户友好,更耐用于no-js浏览器等.

点赞