我有一个简单的登录表单,通过$ .ajax函数传递给php。 问题是在localhost上$ .ajax函数结果有时会成功,有时会出错。我获得成功的大部分时间是在使用chrome调试器的时候。 当我在服务器上检查文件时,我只得到$ .ajax的错误结果。
提前致谢..
表单代码:
<form method="post" action="">
<h3>Login</h3>
<label>User Name:<input type="text" name="uname" id="uname"></label>
<br>
<label>Password:<input type="password" name="pass" id="pass"></label>
<br>
<button type="submit" id="submit">login</button>
</form>
$ .ajax代码
$("#submit").click(function(){
$.ajax({
cache: false,
url: 'php/login.php',
type: 'POST',
dataType: 'json',
data: {
uname: $('#uname').val(),
pass: $('#pass').val()
},
success: function (data) {
Cookies.set('uid', data[0].uid);
alert("test");
},
error: function (xhr, status) {
alert("Sorry, there was a problem!");
},
});
})
php代码
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
require_once 'config.php';
$conn = mysqli_connect($hn, $un, $pw, $db);
if ($conn->connect_error) die($conn->connect_error);
$uname=mysql_real_escape_string($_POST['uname']);
$pass=md5(mysql_real_escape_string($_POST['pass']));
$result = $conn->query("SELECT * FROM users WHERE uname LIKE '$uname' AND upass LIKE '$pass'");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
$outp .= '{"uid":"'.$rs["uid"].'"}';
}
$outp .="]";
$conn->close();
echo($outp);
答案 0 :(得分:1)
您的表单可能仍在尝试提交正常方式,因为您没有正确拦截它。
在表单中添加ID。
<form id="myForm" method="post" action="">
将您的代码更改为以下内容并试一试。我们正在做的是拦截表单提交并阻止默认操作。
$("#myForm").submit(function(event){
$.ajax({
cache: false,
url: 'php/login.php',
type: 'POST',
dataType: 'json',
data: {
uname: $('#uname').val(),
pass: $('#pass').val()
},
success: function (data) {
Cookies.set('uid', data[0].uid);
alert("test");
},
error: function (xhr, status) {
alert("Sorry, there was a problem!");
},
});
event.preventDefault();
});