json_encode返回200并且未定义

我想要一个代码来添加或删除数据库书签。 代码已准备就绪,它正确地添加和删除数据库书签,但是当我调用该函数时,即使代码工作,它也会继续返回json error而不是json success

我想知道代码有什么问题(我从其他地方得到并适应)因为客户端没有接收到正确的值truefalse ,它只触发json beforeSendingjson 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)); } 

客户端:

  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); } }); }  

console.log(data.status + ' ' + data.added); line logs 200 undefined

如何为"status""added"返回正确的值truefalse


编辑: json success永远不会记录在控制台上,所以我不知道服务器端发生了什么。 我需要知道这一点,因为我需要更改元素的类以显示空的或黄色的星。

如果你return结果并且没有在其他地方做任何返回,你将不会得到任何对你的ajax调用的响应,所以它是undefined 。 正如@MikeC所说,你必须在某个时候echo它。

如果您还没有在其他地方回复它,请尝试:

 $response = array( 'status' => $isFavourite, 'added' => !$isFavourite ); echo json_encode($response); 

我的建议是,如果’status’和’added’实际上每次都是相反的,那么你可能只需要自己发送’status’。 如果你想知道added的值是什么,你可以在你的JS中检查’status’并反转我在上面做过的布尔值。

  var added = !data.status; 

更新

如果您的ajax请求返回error函数,请求本身可能会失败。

将您的错误function更改为此,以调试发生的事情:

 'error': function(jqXHR, status, error) { console.log(status); console.log(error); } 

您可能在某处的服务器端代码中出现错误,或者您可能正在调用错误的PHP脚本?