我希望我的AJAX脚本响应来自PHP的echo
,但是它不起作用。这是register.php:
<?php
if (isset($_POST['username']))
{
require_once('dbconfig.php');
$user = $_POST['username'];
$pass = $_POST['password'];
if (strlen($user) > 1)
{
echo '{"status":success}';
}
else if (strlen($user) < 1)
{
echo '{"status":failed}';
}
} else
echo "Sesiunea nu mai este activa.";
?>
$(document).ready(function() {
$('#btnRegister').click(function() {
var user = $('#username').val();
var pass = $('#password').val();
var posting = $.post("http://localhost/univoo/ucp/universitati/dbfunc/register.php", {
username: user,
password: pass
});
posting.done(function(data) {
if (data.status == "success") {
alert("Succes");
} else if (data.status == "failed") {
alert("failed");
};
});
});
});
答案 0 :(得分:2)
尝试一下:
<?php
if (isset($_POST['username'])) {
require_once('dbconfig.php');
$user = $_POST['username'];
$pass = $_POST['password'];
if (strlen($user) > 1) {
$result = true;
} else if (strlen($user) < 1) {
$result = false;
} else {
$result = 'Sesiunea nu mai este activa.';
}
echo json_encode(compact('result'));
}
?>
还有您的JavaScript:
posting.done(function(data) {
var response = JSON.parse(data);
if (response.result === true) {
alert('success');
} else if (response.result === false) {
alert('failed');
} else {
alert(response.result);
}
});
答案 1 :(得分:0)
问题可能出在响应的编码上。尝试
echo json_encode('{"status":"success"}');
编辑:哈哈,是的,我的回答是错误的。 JSON编码过多。如果您已经得到了响应{“ status”:“ success”}
,也许上面问题中的评论所指出的是缺少JSON.parse答案 2 :(得分:0)
您的JSON响应无效。您需要将“成功”或“失败”用双引号引起来,例如:
echo '{"status":"success"}';
也就是说,最好不要手动构建字符串,而是使用json_encode
从PHP逻辑序列化数组。
还请注意,您的jQuery代码将需要进行修改以手动反序列化此文本响应,因为它不会自动识别为JSON:
posting.done(function(data) {
data = JSON.parse(data); // add this line
if (data.status == "success") {
alert("Succes");
} else if (data.status == "failed") {
alert("failed");
};
});