Javascript 无法将结果从pdo发送到ajax

Javascript 无法将结果从pdo发送到ajax,javascript,php,jquery,ajax,pdo,Javascript,Php,Jquery,Ajax,Pdo,我想做的是,如果用户成功注册,pdo将提供一个信息并将其发送给ajax,而ajax将发送一条消息,说明用户是否注册。在我把这个条件放到pdo中之后,它工作正常,现在它不会再插入了,ajax一直在告诉“注册用户时出错!” 脚本: <script type="text/javascript"> $(document).ready(function() { $('#submit').click(function (e) { e.preventDefault();

我想做的是,如果用户成功注册,pdo将提供一个信息并将其发送给ajax,而ajax将发送一条消息,说明用户是否注册。在我把这个条件放到pdo中之后,它工作正常,现在它不会再插入了,ajax一直在告诉“注册用户时出错!”

脚本:

<script type="text/javascript">
$(document).ready(function() {

   $('#submit').click(function (e) {
       e.preventDefault();

        var data = {};
        data.name = $('#name').val();
        data.age = $('#age').val();
        data.gender = $('#gender').val();
        data.address = $('#address').val();
        data.image = $('#imgInp').val();


        $.ajax({
            type: "POST",
            url: "user.php",
            data: data,
            cache: false,
            success: function (response) {
            if (Number(response) == 1)
                {
                alert("User successfully registered");
                }
                      else
                {
                alert("Error registering user!");
                }
            }
        });
            return false;
    });

});
</script>

$(文档).ready(函数(){
$(“#提交”)。单击(函数(e){
e、 预防默认值();
变量数据={};
data.name=$('#name').val();
data.age=$('#age').val();
data.gender=$('#gender').val();
data.address=$('#address').val();
data.image=$('#imgInp').val();
$.ajax({
类型:“POST”,
url:“user.php”,
数据:数据,
cache:false,
成功:功能(响应){
如果(数字(响应)==1)
{
警报(“用户成功注册”);
}
其他的
{
警报(“注册用户时出错!”);
}
}
});
返回false;
});
});
user.php:

<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "test";

$dbc = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$name = @$_POST['name'];
$age = @$_POST['age'];
$address = @$_POST['address'];
$gender = @$_POST['gender'];
$imageName = @$_FILES['image']['name'];


 $q = "INSERT INTO students(name, age, address, gender, imageName ) VALUES(:name, :age, :address, :gender, :image)";

    $query = $dbc->prepare($q);
    $query->bindParam(':name', $name);
    $query->bindParam(':age', $age);
    $query->bindParam(':address', $address);
    $query->bindParam(':gender', $gender);
    $query->bindParam(':image', $imageName);


    $results = $query->execute();
    $results ? echo "1"; : echo "2"; ;
?>

您似乎在以下方面有错误:

$results ? echo "1"; : echo "2"; ;

试着这样做:

echo  $results ? "1" : "2";


您可以查看教程。

有错误吗?查询是否正在执行,即是否回显1?@user3756231:您尝试过吗?作为对错误的补充说明:三元条件不执行指令,它们返回值。因此,使用一个?B:如果A的计算结果为真,C将返回B;如果计算结果为假,C将返回C;它不会“执行”B或C。因为“echo 1;”是一条指令而不是一个值,所以代码会导致错误,javascript接收到的响应内容总是与1不同(无论是因为响应为空,还是返回一大块php错误文本)