当我提交我的注册表单时,jQuery将它发送到register.php,然后返回要使用的jQuery的JSON数据。
一切正常 - 用户注册。 register.php在网络响应选项卡中返回{"tulemus":"olemas"}
。
这里的问题是,虽然register.php
会返回类似的数据,但它不会发送到function(data)
。我甚至试过做console.log(data)
并且没有任何东西出现在控制台中..虽然在网络选项卡中我可以看到.php文件成功返回数据。
Register.php:
<?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('<div class="alert alert-danger" style="margin-top:25px;"> <strong>Viga!</strong> Sellise nimega kasutaja juba eksisteerib.</div>').fadeIn(1000);
} else if (data.tulemus == 'loodud'){
$("#resultDiv").hide().html('<div class="alert alert-success" style="margin-top:25px;"> <strong>Kasutaja loodud!</strong> Võite nüüd sisse logida.</div>').fadeIn(1000);
} else if (data.tulemus == 'nomatch'){
$("#resultDiv").hide().html('<div class="alert alert-danger" style="margin-top:25px;"> <strong>Viga!</strong> Teie sisestatud paroolid on erinevad.</div>').fadeIn(1000);
}
}, "json");
});
});
答案 0 :(得分:0)
在Chrome中,红点通常代表不可打印的特殊unicode字符。请检查服务器端代码以防止输出这些字符。
如果您的文件使用UTF-8进行编码,最好使用UTF-8编码而不使用BOM。这可以通过记事本++轻松完成。步骤如下:
这可能会解决您的问题。
答案 1 :(得分:0)
•{"foo":"bar"}
不是有效的JSON。子弹点可能由于编码而出现 - json_encode
需要UTF8编码。
你可以使用类似mb_convert_encoding($string,'UTF-8','auto');
的东西,但是在PHP文档(here)的评论部分还有很多其他解决方案来处理UTF8和json_encode。
答案 2 :(得分:0)
将您的功能作为成功响应提供,并将参数'data'作为
success:function(data)
{
if(data.tulemus == 'olemas') {
$("#resultDiv").hide().html('<div class="alert alert-danger" style="margin-top:25px;"> <strong>Viga!</strong> Sellise nimega kasutaja juba eksisteerib.</div>').fadeIn(1000);
} else if (data.tulemus == 'loodud'){
$("#resultDiv").hide().html('<div class="alert alert-success" style="margin-top:25px;"> <strong>Kasutaja loodud!</strong> Võite nüüd sisse logida.</div>').fadeIn(1000);
} else if (data.tulemus == 'nomatch'){
$("#resultDiv").hide().html('<div class="alert alert-danger" style="margin-top:25px;"> <strong>Viga!</strong> Teie sisestatud paroolid on erinevad.</div>').fadeIn(1000);
}
},