PHP值没有被AJAX捕获

时间:2018-04-24 20:56:53

标签: php ajax

我有一些代码通过AJAX向php发送变量(pin),然后查询数据库,如果找到结果,则php echo的值为1.一切正常,但Ajax无法识别php返回的值。

这是我的代码

$(document).ready(function () {
    $("form.submit").submit(function () {
        var pin = $(this).find("[name='pin']").val();

        // ...

        $.ajax({
            type: "POST",
            url: "http://www.example.com/pin.php",
            data: {
                pin : pin,
            },
            success: function (response) {
                if (response == "1") {
                    $("#responsecontainer").html(response);

                    window.location.href = "home.html?user=" + user;
                    // Functions
                } else { // Login failed
                    alert("LOGIN FAILED");
                }
            }
        });

        this.reset();

        return false;
    });
});

这是我的PHP代码,我知道下面的代码返回值1.当触发Ajax时,它返回一个生成登录失败消息的值。有没有办法看到Ajax发送的内容,如果我换出ajax并直接将for提交给服务器,它也会在php echo上返回1。

 $pin = $_GET["pin"];
 $db = new PDO("mysql:host=localhost;dbname=xxxxx;charset=utf8", "xxxx", "xxxx");
 $count = $db->query("SELECT count(1) FROM users WHERE pin='$pin'")->fetchColumn();
 echo $count;

1 个答案:

答案 0 :(得分:0)

建议返回JSON数据作为ajax请求的结果。

所以试试这个:

编辑:我已经更新了php代码,使用PDO prepare()方法进行sql查询,并考虑了@Dominik的评论

$pin = $_POST['pin'];
$db = new PDO('mysql:host=localhost;dbname=xxxxx;charset=utf8', 'xxxx', 'xxxx');
$stmt = $pdo->prepare('SELECT count(1) FROM users WHERE pin = :pin');
$stmt->execute(array('pin' => $pin));
return json_encode([
  "count" => $stmt->fetchColumn()
]);

在你的ajax成功回调中:

...
success: function(response) {
  var count = JSON.parse(response).count;
  if (count == "1") {
    $("#responsecontainer").html(response);
    window.location.href = "home.html?user="+ user;
  } else {// Login failed
    alert("LOGIN FAILED");
  }
},
error: function(error) {
  ...
}

希望它对你有帮助:)。