Доступ к данным JSON Ajax Response

-1

Я добавил свойство к данным JSON, но я не могу получить доступ к данным на JS, которые он не показывает. Я не новичок в Ajax и JSON, но очевидно, что у меня все еще есть пробелы в моих знаниях, когда дело касается Ajax. Пожалуйста, помогите мне понять, как я могу добавить данные в свой ответ Ajax.

У меня это в классе контроллера PHP:

$x = '5';

if($request->ajax()){
    return response()->json([
        'total_questions' => $x,
        'responseText' => $e->getMessage(), 
    ], 500);
}

Я хочу получить доступ к свойству total_questions с помощью JS/JQuery.

Мой ответ JS AJAX здесь: console.log('errors ->', data.total_questions); - возвращает неопределенные

$.ajax({

    type:"POST",
    url: APP_URL+"selfEvaluation/save",
    data:$(this).serialize(),
    dataType: 'json',
    success: function(data){
        console.log(data);
    },
    error: function(data){
        var errors = data.responseJSON;
        console.log('data -> ', data);
        console.log('errors -> ', data.total_questions);

        if(data.status == 422){
            // alert('422');
        }
    }
});

Это мой результат консоли Изображение 174551

  • 0
    что вы получаете в console.log?
  • 0
    @Gaurav, проверь правку
Показать ещё 18 комментариев

2 ответа

0

error: function(data){

является неправильной сигнатурой метода. См. Определение по адресу http://api.jquery.com/jquery.ajax/. Так должно быть

error: function(jqXHR, errorThrown, textStatus){.

Вам нужно получить доступ к свойству jqXHR.responseJSON. Так:

console.log('errors → ', jqXHR.responseJSON.total_questions);

Но я бы поставил под вопрос, почему вы возвращаете код статуса "500" для этого запроса, когда он кажется допустимым ответом. "500" означает "Внутренняя ошибка сервера", из-за чего сервер разбился, когда выяснилось, что этого не произошло. Если вы вернете статус "200" ("ОК"), ваш код ajax перейдет в "успешный" обратный вызов, и вы можете напрямую ссылаться на объект "данные" в обратном вызове, чтобы прочитать ваши данные.

  • 0
    Моя цель - просто добавить переменную к данным JSON при возврате из контроллера в сценарий JS - так что, если есть другой способ сделать это.
  • 0
    Кстати это не имеет значения, если я передаю данные или JQXHR, .. результат тот же.
Показать ещё 4 комментария
-1

попробуйте это, если вы получите ответ json из своего браузера.

if($request->ajax()){
    $result = array(
        'total_questions' => $x,
        'responseText' => $e->getMessage(), 
    ], 500);
}

echo json_encode($result); 
  • 1
    ОП уже получает ответ. Это просто способ создания ответа без какой-либо структуры, которую они используют. Проблема в том, что они не могут разобрать его на стороне клиента.
  • 0
    Хорошо :)..........

Ещё вопросы

Сообщество Overcoder
Наверх
Меню