How to display JSON data with jQuery Ajax?

14,101

Solution 1

You seem to be lacking the line to parse your JSON to convert it in an array. Your code should add this line:

...
success: function(data) {
          console.log(data);
          data = jQuery.parseJSON(data); // <-- *** ADD THIS LINE ***
          var html_to_append = '';
          $.each(data, function(i, item) {
            html_to_append += .......

Solution 2

You should set the dataType param on the ajax call so you get an object back rather than a string. It appears that your api service doesn't set a type specific content type header and so jquery doesn't attempt to parse the data based upon the content type. https://jsfiddle.net/6ygan94m/ is an example of your code in action.

$.ajax({
        url: "https://raw.githubusercontent.com/RichmondDay/public/master/test_vehicle_inventory_data.json",
        method: "GET",
        dataType: 'json',
        success: function(data) {
          console.log(typeof(data));
          var html_to_append = '';
          $.each(data, function(i, item) {
            html_to_append +=
            '<div class="col-3 mb-3"><div class="text-uppercase"><p>' +
            item.Name + 
            '<div class="col-3 mb-3"><div class="ext-uppercase"><p>' +
            item.Price +
            '</p></div><img  class="image img-fluid" src="' +
            item.photo +
            '" /><p class="company">' +
            item.Retailer +
            '</p></div>';
          });
          $("#items-container").html(html_to_append);
        },
        error: function() {
          console.log(data);
        }
      });

See the jquery api docs for more info: http://api.jquery.com/jquery.ajax/

dataType (default: Intelligent Guess (xml, json, script, or html)) Type: String The type of data that you're expecting back from the server. If none is specified, jQuery will try to infer it based on the MIME type of the response (an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be returned as a string).

Share:
14,101

Related videos on Youtube

Alan
Author by

Alan

Updated on June 21, 2022

Comments

  • Alan
    Alan about 1 year

    My code is not working and not sure why. Please help

    I have an AJAX call that returns some JSON like this but wont returns my data from the json file:

      $(function() {
        ajaxJS();
        function ajaxJS(e) {
          if (e) {
            e.preventDefault();
          }
          $.ajax({
            url: "https://raw.githubusercontent.com/RichmondDay/public/master/test_vehicle_inventory_data.json",
            method: "GET",
            success: function(data) {
              console.log(data);
              var html_to_append = '';
              $.each(data, function(i, item) {
                html_to_append +=
                '<div class="col-3 mb-3"><div class="text-uppercase"><p>' +
                item.Name + 
                '<div class="col-3 mb-3"><div class="ext-uppercase"><p>' +
                item.Price +
                '</p></div><img  class="image img-fluid" src="' +
                item.photo +
                '" /><p class="company">' +
                item.Retailer +
                '</p></div>';
              });
              $("#items-container").html(html_to_append);
            },
            error: function() {
              console.log(data);
            }
          });
        }
      });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="container-fluid">
        <div id="items-container" class="row"></div>
      </div>

    Json

Related