【发布时间】: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