当我提交我的注册表单时,jQuery将它发送到register.php,然后返回JSON数据供jQuery使用。AJAX请求成功但没有数据可以使用
一切工作正常 - 用户获得注册。 register.php在网络响应标签中返回{"tulemus":"olemas"}。
这里的问题是,尽管register.php返回的数据应该是这样的,但它不会被发送到function(data)。我甚至试着做console.log(data),并没有在控制台中显示出来,尽管在网络标签中,我可以看到.php文件成功返回数据。
Register.php:
if(isset($_POST['username'])){
include_once 'db_connect.php';
$username = $_POST['username'];
$password = $_POST['password'];
$passwordconfirm = $_POST['passwordconfirm'];
if($password == $passwordconfirm) {
$email = $_POST['email'];
$turvakysimus = $_POST['turvakysimus'];
$turvavastus = $_POST['turvavastus'];
$sql = "SELECT username FROM kasutajad WHERE username = :username";
$query = $pdo->prepare($sql);
$query->bindValue(':username', $username);
$query->execute();
$query->fetch(PDO::FETCH_ASSOC);
if($query->rowCount()){
echo json_encode(array("tulemus"=>"olemas"));
} else {
if($user->register($username, $password, $email, $turvakysimus, $turvavastus)) {
echo json_encode(array("tulemus"=>"loodud"));
}
}
} else {
echo json_encode(array("tulemus"=>"nomatch"));
}
}
?>
而jQuery的:
$(function(){
$("form").submit(function() {
event.preventDefault();
var username = $('#username').val();
var password = $('#password').val();
var passwordconfirm = $('#password_confirm').val();
var email = $('#email').val();
var turvakysimus = $('#turvakysimus').val();
var turvavastus = $('#turvavastus').val();
$.post("register.php",
{
username: username,
password: password,
passwordconfirm: passwordconfirm,
email: email,
turvakysimus: turvakysimus,
turvavastus: turvavastus
},
function(data)
{
if(data.tulemus == 'olemas') {
$("#resultDiv").hide().html('
} else if (data.tulemus == 'loodud'){
$("#resultDiv").hide().html('
} else if (data.tulemus == 'nomatch'){
$("#resultDiv").hide().html('
}
}, "json");
});
});
2015-11-03
fidtal
+0
你得到任何错误。你能查看浏览器的控制台吗? –
+0
浏览器控制台中没有任何内容,并且在“网络”选项卡中,您可以看到''php'''脚本正在返回JSON数据:https://gyazo.com/0660e396ac613ff15faadab4ca619707由于某种原因,jQuery没有收到该信息。 –
+1
似乎在JSON前加了一个'•'字符,并在该屏幕截图中使其无效。 –