我有一些代码通过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;
答案 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) {
...
}
希望它对你有帮助:)。