Неожиданный конец ввода JSON ajax

#javascript #php #jquery #json #ajax

#javascript #php #jquery #json #ajax

Вопрос:

Вот что происходит. У меня есть ошибка в моем Ajax-коде, которая вызывает следующую ошибку:

Неожиданный конец ввода JSON ajax

Вот мой код:

Я получаю данные из массива, выполняя следующие действия:

       echo json_encode($departTickets);
 

Затем я анализирую JSON, выполняя следующие действия:

            $("[data-department-id]").click(function() {                   
                id = $(this).attr('data-department-id');  
                $.ajax({
                    type: 'POST',                       
                    data : {
                      'id' : id  
                    },
                    url:"/desk/template/fetchtickets.php",
                   
                    success: function (res) {                           
                        var data = jQuery.parseJSON(res);
                        
                        for (var jsonId in data) {                               
                            $('#department_' id).html(jsonId);                                   
                        }   
                    }
                });                                       
            });
 

Исходя из кода, что может быть причиной проблемы?

Спасибо, Кевин Дэвис

Комментарии:

1. простая отладка, что вы получаете console.log(res) ?

2. Возможно, ваш JSON недействителен. Попробуйте записать ответ в журнал и использовать валидатор jsonformatter.curiousconcept.com для того, чтобы убедиться в этом.

3. Я использовал console.log(res), и по какой-то причине я ничего не получаю.

4. @Kevin возможно, ваш идентификатор неверен… сделайте простой echo 'works'; и посмотрите, получаете ли вы его console.log(res);

5. Я попробовал. Тем не менее, это работает, однако, когда я выполняю json_encode, ничего не возвращается. Я даже сделал print_r.

Ответ №1:

Номер 1 echo json_encode($departTickets); — ваша кодировка данных в json.

Затем разбираем его на AJAX, но вы не сказали ajax, что ваш dataType файл находится в json.

Итак, мы сообщаем ajax следующим образом

        $("[data-department-id]").click(function() {                   
            id = $(this).attr('data-department-id');  
            $.ajax({
                type: 'POST',
                url:"/desk/template/fetchtickets.php",
                dataType: 'json',
                data : {
                  'id' : id  
                },
                success: function (res) {                           
                    var data = jQuery.parseJSON(res);
                    
                    for (var jsonId in data) {                               
                        $('#department_' id).html(jsonId);                                   
                    }   
                }
            });                                       
        });
 

Пожалуйста, обратите внимание, как я изменил положение url и разместил тип данных ниже.

Ответ №2:

Найдено решение..

Сначала вот как я нашел решение.

Я использовал следующую команду:

       echo json_last_error_msg();
 

Тогда это была проблема с кодировкой данных, поэтому я сделал следующее:

       $departTickets =  mb_convert_encoding($departTickets, 'UTF-8', 'UTF-8');  
      echo json_encode($departTickets); 
 

Проблема решена.