如何使用jQuery Ajax显示JSON数据?

时间:2018-05-18 20:58:06

标签: jquery json ajax

我的代码无效,不确定原因。请帮忙

我有一个AJAX调用,返回一些像这样的JSON,但不会从json文件返回我的数据:

  $(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

3 个答案:

答案 0 :(得分:1)

您似乎缺乏解析JSON以在数组中转换它的行。您的代码应添加以下行:

...
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 += .......

答案 1 :(得分:1)

您应该在ajax调用上设置dataType参数,以便返回一个对象而不是字符串。您的api服务似乎没有设置特定于类型的内容类型标头,因此jquery不会尝试根据内容类型解析数据。 https://jsfiddle.net/6ygan94m/是您的代码实例。

$.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);
        }
      });

有关详细信息,请参阅jquery api文档:http://api.jquery.com/jquery.ajax/

  

dataType(默认值:Intelligent Guess(xml,json,script或html))   类型:字符串   您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回)。

答案 2 :(得分:0)

你应该包括这一行,因为它可能是数据类型为字符串而不是对象

if (typeof data === "string") // validate if data is json string then parse it 
data = JSON.parseJSON(data)