在表单提交之前validation连接

我正在尝试在表单提交之前validation用户的Internet连接,以便我的JavaScriptvalidation函数可以抛出警报并在没有连接时返回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; } } }); 

我得到第三种错误的警报,但随后表单提交。 我猜这个错误会覆盖我尝试指定同步检查的事实,并且JavaScriptvalidation器在AJAX返回false之前完成。

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

谢谢!

我会这样走:

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

它只是一个草稿,一切都可以变得更加用户友好,对于no-js浏览器来说更加健壮。