我正在尝试使用jquery ajax调用将用户添加到数据库。用户可以很好地添加到数据库中,但是ajax总是返回错误。我不知道如何检索特定的错误。下面是我的代码,表单,php和jquery。
这是jquery
$(document).ready(function() {
//ajax call for all forms.
$('.button').click(function() {
var form = $(this).closest('form');
$.ajax({
type: "POST",
url: form.attr('data'),
dataType: 'json',
data: form.serialize(),
success: function (response) {
alert('something');
},
error: function() {
alert('fail');
}
});
});
});
这是PHP
<?php
include 'class_lib.php';
if(isset($_POST['username'])) {
$user = new Users;
$user->cleanInput($_POST['username'], $_POST['password']);
if($user->insertUser()) {
echo json_encode('true');
} else {
echo json_encode('false');
}
}
这是HTML
<div id='newUser' class='tool'>
<h3>New User</h3>
<form method='post' name='newUser' data='../php/newUser.php'>
<span>Username</span><input type='text' name='username'><br>
<span>Password</span><input type='password' name='password'>
<input type='submit' name='submit' class='button' style='visibility: hidden'>
</form>
<span class='result'> </span>
</div>
答案 0 :(得分:25)
@Musa,在你提到的
之上我的猜测是解析错误,请尝试删除dataType:'json',看看是否有效
你绝对解决了我遇到的问题!我的ajax帖子请求与上面类似,它只是一直回到'错误'部分。虽然我使用firebug进行了检查,但状态为200(ok)并且没有错误。
删除'dataType:json'为我解决了这个问题。非常感谢!
答案 1 :(得分:6)
原来我必须将async: false
添加到$ .ajax函数中。它没有从php得到回复。
答案 2 :(得分:2)
我在那里遇到了同样的问题和发现。问题一直是我的jQuery的版本,我使用了jquery版本(jquery-1.10.2.js),但这个版本不是Ajax stablish。所以,我改变(jquery-1.8.2.js)的版本,这个奇迹出现了。
祝你好运!
答案 3 :(得分:1)
您应指定状态代码200以获得成功响应。
<?php
http_response_code(200);
?>
见这里:http://php.net/manual/en/function.http-response-code.php
答案 4 :(得分:1)
尝试像这样删除 js 文件中的 dataType
:
$(document).ready(function() {
$('.button').click(function() {
var form = $(this).closest('form');
$.ajax({
type: "POST",
url: form.attr('data'),
data: form.serialize(),
success: function (response) {
alert('something');
},
error: function() {
alert('fail');
}
});
});
});
像这样向 AJAX 发送一个真正干净的 JSON:
PHP
if(isset($_POST['username'])) {
$user = new Users;
$user->cleanInput($_POST['username'], $_POST['password']);
if($user->insertUser()) {
$error = [
"title"=> 'true',
"body"=> 'some info here ... '
];
echo json_encode($error);
} else {
$error = [
"title"=> 'false',
"body"=> 'some info here ... '
];
echo json_encode($error);
}
}
JavaScript
$(document).ready(function() {
$('.button').click(function() {
var form = $(this).closest('form');
$.ajax({
type: "POST",
url: form.attr('data'),
dataType: 'json',
data: form.serialize(),
success: function (data) {
let x = JSON.parse(JSON.stringify(data));
console.log(x.title);
console.log(x.body);
},
error: function() {
//code here
}
});
});
});