【问题标题】:ajax succes triggered even if the form is false即使表单为假,也会触发 ajax 成功
【发布时间】:2019-03-13 22:06:26
【问题描述】:

我想不通,我有一个 ajax 提交的表单,即使表单值不符合要求,ajax 代码也总是返回 false。 此外,当表单正确时应该在表单操作 php 文件中发生的功能不会发生,所以我是否填写必填字段,或者如果我填写正确或错误,ajax 将称之为成功和php 操作不起作用{即使表单正确!}

表格:

<form method="POST" onsubmit="return loginSubmit(this)">
<input type="text" name="username" placeholder="username"></br>
<input type="password" name="password" placeholder="password"></br>
<button type="submit" name="submit">login</button>
</form>

功能:

function loginSubmit(element){
  var values = $(element).serialize();
  $.ajax({
    type: 'post',
    url: 'assets/login.inc.php',
    data: values,
    success: function(data){
      alert('success');
    }
  });   
  return false;
}

表单操作{php}:

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

【问题讨论】:

  • 嗯,函数立即返回, ajax 调用得到响应(异步)之前。你不能指望函数返回依赖于未来事件的东西。所以是的,它总是返回 false。
  • @trincot 抱歉,我无法理解您写的内容。 ajax 总是返回成功而不是错误。
  • 这不是一个return,那个警报是异步回调产生的。它与loginSubmit 的返回值无关。执行顺序是:(1)values =,(2)$.ajax(),(3)return false,(4)由于(3)没有提交表单,(暂停...现在PHP脚本运行完成...), (5) alert('success')
  • @trincot ,感谢您的回复,感谢您帮助我了解执行过程。我试图查看“数据”返回什么,它返回了整个 php 表单页面。我发现更多的人有同样的事情{整个页面返回},但我仍然无法解决我的问题。如果我的英语难以理解,我也很抱歉。
  • 这是一个完全不同的问题。有关该主题的许多不同答案,另请参阅 this

标签: javascript jquery ajax


【解决方案1】:

jQuery success 回调并没有像你想象的那样做。如果 HTTP 调用成功并收到正常的“OK”响应,则会触发它。

您需要解析回调中的data 参数以确定您的PHP 代码返回的内容。

来自“Ajax”方法调用的 jQuery 文档:

请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据dataType 参数或dataFilter 回调函数(如果指定)格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。 参考:http://api.jquery.com/jquery.ajax/

【讨论】:

  • 谢谢你的回复,也谢谢你让我明白,现在我知道为什么每次都成功了。我仍然无法解决我的问题,尽管我尝试检查将返回什么“数据”并且它重新调整了我在其他常见问题上看到的整个表单页面,但我仍然没有让它工作......
  • 不知道为什么有人会否决这个?这是正确的,是 OP 中混乱的根源。
  • @Afik​​Habaz 我不是 PHP 程序员,但我相信您发布到的 URL 旨在包含在其他 PHP 文件中,而不是单独调用(由 @987654326 指定@扩展。
【解决方案2】:

好的,我知道了,在 php 文件中我检查了表单是否已提交,如果您通过 ajax 提交它,这似乎不正确。谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2020-01-26
    相关资源
    最近更新 更多