首页 > 解决方案 > 即使表单为假,ajax 也会成功触发

问题描述

我想不通,我有一个由 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}:

它有点长,我不希望这篇文章看起来像一团糟,所以我只是在写我从表单中提取数据的方式,当我提交没有 ajax 的表单时,php 代码工作正常。

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

标签: javascriptjqueryajax

解决方案


jQuerysuccess回调不会做你认为它做的事情。如果 HTTP 调用成功并收到正常的“OK”响应,则会触发它。

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

从“Ajax”方法调用的 jQuery 文档中:

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


推荐阅读