Kevin
Kevin

Reputation: 309

Unexpected end of JSON input ajax

Here is what is going on. I have an error in my Ajax code that is causing the following error:

Unexpected end of JSON input ajax

Here is my code:

I'm getting data from an array by doing the following:

      echo json_encode($departTickets);

Then I'm parsing the JSON by doing the following:

           $("[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);                                   
                        }   
                    }
                });                                       
            });

Based on the code, what could be causing the issue?

Thank you, Kevin Davis

Upvotes: 0

Views: 97

Answers (2)

OpenSourceAdvocate
OpenSourceAdvocate

Reputation: 71

Number 1 echo json_encode($departTickets); your encoding the data in json.

Then parsing it to AJAX, but you have not told ajax that your dataType is in json.

So we tell ajax like this

       $("[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);                                   
                    }   
                }
            });                                       
        });

Please note how i changed the position of url and placed the dataType bellow it.

Upvotes: 1

Kevin
Kevin

Reputation: 309

Found a solution..

First here is how I found the resolution.

I used the following command:

      echo json_last_error_msg();

Then it was an encoding issue with the data, so I did the following is:

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

Problem solved.

Upvotes: 0

Related Questions