我想要在数据库书签中添加或删除代码。
代码已经准备就绪,它可以正确地添加和删除数据库书签,但是当我调用该函数时,即使代码正常工作,它仍然会返回json error
而不是json success
。
我想知道代码有什么问题(我从其他地方得到并适应),因为客户端没有收到正确的值true
或{{1} },它只触发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"
永远不会登录到控制台,因此我不知道服务器端发生了什么。我需要知道这一点,因为我需要更改一个元素的类来显示一个空的或黄色的星。
答案 0 :(得分:4)
如果您return
结果并且没有在其他地方做任何回复,那么您将无法得到对您的ajax调用的任何回复,因此它是undefined
。正如@MikeC所说,你必须在某个时候echo
。
如果您还没有在其他地方回复,请尝试:
$response = array(
'status' => $isFavourite,
'added' => !$isFavourite
);
echo json_encode($response);
我的建议是,如果'status'和'added'每次都是相反的,那么你可能只需要自己发送'status'。在你的JS中,如果你想知道added
的值是什么,你可以检查'status'并反转我在上面做的布尔值。
var added = !data.status;
<强>更新强>
如果您的ajax请求回到error
函数,请求本身可能会失败。
将错误功能更改为此,以调试发生的事情:
'error': function(jqXHR, status, error) {
console.log(status);
console.log(error);
}
您可能在某处遇到服务器端代码错误,或者您正在调用错误的PHP脚本?