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