【问题标题】:Verify connection before form submit表单提交前验证连接
【发布时间】:2013-03-08 21:53:28
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 如果他们没有 Internet 连接,他们首先如何访问您的表单?
  • 你在ret_text收到了什么?
  • @j08691:可以剪掉。我收到了一位用户的投诉,称他在尝试提交时由于网络不稳定而丢失了数据,这似乎是对长表单的合理担忧
  • @EmCo: internet_test.php 只是

标签: jquery ajax forms


【解决方案1】:

我会走这条路:

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

这只是一个草稿,一切都可以变得更加用户友好,对于无 js 浏览器等更强大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多