json_encode возвращает 200 и не определено

Я хотел бы иметь код для добавления или удаления из закладок базы данных. Код готов, и он добавляет и удаляет из закладок базы данных правильно, но когда я вызываю функцию, он продолжает возвращать 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 никогда не регистрируется на консоли, поэтому я не знаю, что произошло на стороне сервера. Мне нужно это знать, потому что мне нужно изменить класс элемента, чтобы отобразить пустую или желтую звездочку.

Если вы return результат и ничего не делаете с этим возвратом в другом месте, вы не получите никакого ответа на ваш вызов ajax, поэтому он не undefined . Как говорит @MikeC, в какой-то момент вы должны echo его.

Если вы еще не повторите его в другом месте, попробуйте:

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

Мое предложение также заключается в том, что каждый раз, когда «статус» и «добавленный» действительно противоположны друг другу, тогда вам, вероятно, нужно только отправить статус «самостоятельно». В вашем JS вы можете просто проверить «статус» и отменить логическое значение, как я сделал выше, если вы хотите знать, что такое значение added .

  var added = !data.status; 

Обновить

Если ваш запрос ajax возвращается к функции error , сам запрос, вероятно, не работает.

Измените функцию ошибки на это, чтобы отладить произошедшее:

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

Возможно, у вас может быть ошибка в серверном коде где-то или вы вызываете неправильный скрипт PHP?