我想要一个代码来添加或删除数据库书签。
代码已准备就绪,它可以正确添加和删除数据库书签,但是当我调用该函数时,它不断返回 json error
相反 json success
即使代码有效。
我想知道代码(我从其他地方获得并改编的)有什么问题,因为客户端没有收到正确的值 true
或false
,它只会触发json beforeSending
和json error
.
服务器端:
if($isFavorite) {
// if it's favorite, remove from bookmarks
return json_encode(array("status" => true, "added" => false));
} else {
// if it's not favorite, include into bookmarks
return json_encode(array("status" => false, "added" => true));
}
客户端:
<script>
function addItemToUsersList(userId, type, itemId) {
jQuery.ajax({
'url': 'xxx',
'type': 'GET',
'dataType': 'json',
'data': {userid: userId, type: type, itemid: itemId},
'success': function(data) {
console.log('json success');
},
'beforeSend': function() {
console.log('json beforeSending');
},
'error': function(data) {
console.log('json error');
console.log(data.status + ' ' + data.added);
}
});
}
</script>
console.log(data.status + ' ' + data.added);
线路日志 200 undefined
如何返回正确的值 true
或false
对于两者"status"
和"added"
?
编辑:
json success
从未登录过控制台,所以我不知道服务器端发生了什么。我需要知道这一点,因为我需要更改元素的类以显示空星或黄色星。
最佳答案
如果您返回
结果并且在其他地方没有对该返回执行任何操作,则您将不会收到对 ajax 调用的任何响应,因此它是未定义
。正如 @MikeC 所说,您必须在某个时刻回显
它。
如果您还没有在其他地方回应它,请尝试:
$response = array(
'status' => $isFavourite,
'added' => !$isFavourite
);
echo json_encode($response);
我的建议是,如果“状态”和“添加”每次都确实相反,那么您可能只需要单独发送“状态”。在你的 JS 中,如果你想知道 added
的值是什么,你可以像我上面所做的那样检查“status”并反转 bool 值。
var added = !data.status;
<小时/>
更新
如果您的 ajax 请求返回到 error
函数,则请求本身可能失败。
将错误函数更改为此,以调试发生的情况:
'error': function(jqXHR, status, error) {
console.log(status);
console.log(error);
}
您可能在服务器端代码中的某处出现错误,或者您可能调用了错误的 PHP 脚本?
关于php - json_encode 返回 200 且未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328769/