【问题标题】:How to parse JSON data with jQuery / JavaScript?如何使用 jQuery / JavaScript 解析 JSON 数据?
【发布时间】:2012-02-15 15:10:39
【问题描述】:

我有一个 AJAX 调用,它返回一些像这样的 JSON:

$(document).ready(function () {
    $.ajax({ 
        type: 'GET', 
        url: 'http://example/functions.php', 
        data: { get_param: 'value' }, 
        success: function (data) { 
            var names = data
            $('#cand').html(data);
        }
    });
});

#cand div 中我会得到:

[ { "id" : "1", "name" : "test1" },
  { "id" : "2", "name" : "test2" },
  { "id" : "3", "name" : "test3" },
  { "id" : "4", "name" : "test4" },
  { "id" : "5", "name" : "test5" } ]

如何遍历这些数据并将每个名称放在一个 div 中?

【问题讨论】:

    标签: jquery ajax json parsing


    【解决方案1】:

    假设您的服务器端脚本没有设置正确的 Content-Type: application/json 响应标头,您需要使用 dataType: 'json' 参数向 jQuery 表明这是 JSON。

    然后您可以使用$.each() 函数循环遍历数据:

    $.ajax({ 
        type: 'GET', 
        url: 'http://example/functions.php', 
        data: { get_param: 'value' }, 
        dataType: 'json',
        success: function (data) { 
            $.each(data, function(index, element) {
                $('body').append($('<div>', {
                    text: element.name
                }));
            });
        }
    });
    

    或使用$.getJSON 方法:

    $.getJSON('/functions.php', { get_param: 'value' }, function(data) {
        $.each(data, function(index, element) {
            $('body').append($('<div>', {
                text: element.name
            }));
        });
    });
    

    【讨论】:

    • 成功。谢谢。我必须发送 json pr 我可以从我的 php 函数发送任何东西吗?
    • @Patrioticcow,您也可以发送 JSON。在这种情况下,您需要在$.ajax 函数中设置contentType: 'application/json' 设置,然后JSON 序列化data 参数,如下所示:data: JSON.stringify({ get_param: 'value' })。然后在您的 php 脚本中,您需要进行 json 解码才能取回原始对象。
    • 这个“完成:函数”是什么?这和“成功”一样吗?我在文档中没有看到它。
    • 我的 json 数据是 {"0":{"level1":"done","level2":"done","level3":"no"}} 如何将其提取到每个变量中?我尝试使用$.each 方法,但返回 undefined var level1 = ele[0].level1;
    • @DarinDimitrov 如何在轮播引导程序中显示这些数据?
    【解决方案2】:

    设置 dataType:'json' 将为您解析 JSON:

    $.ajax({
      type: 'GET',
      url: 'http://example/functions.php',
      data: {get_param: 'value'},
      dataType: 'json',
      success: function (data) {
        var names = data
        $('#cand').html(data);
      }
    });
    

    否则你可以使用parseJSON:

    var parsedJson = $.parseJSON(jsonToBeParsed);
    

    然后你可以迭代以下内容:

    var j ='[{"id":"1","name":"test1"},{"id":"2","name":"test2"},{"id":"3","name":"test3"},{"id":"4","name":"test4"},{"id":"5","name":"test5"}]';
    

    ...通过使用$().each:

    var json = $.parseJSON(j);
    $(json).each(function (i, val) {
      $.each(val, function (k, v) {
        console.log(k + " : " + v);
      });
    }); 
    

    JSFiddle

    【讨论】:

    • 我的 json 数据是 {"0":{"level1":"done","level2":"done","level3":"no"}} 如何将其提取到每个变量中?我尝试使用$.each 方法,但返回未定义的变量level1 = ele[0].level1;
    • @151291 这不是问你问题的正确方法,无论如何这里是你的json的小提琴jsfiddle.net/fyxZt/1738。注意数组表示法json[0]
    • 谢谢。有帮助的答案。如何在 db 表中获取指定的列值?
    • @PHPFan 你的意思是如何查询数据库表?请提供更多信息,我建议您提出一个新问题,包括必要的详细信息。
    • @Rafay 例如在这个问题中,如果我只想获取名称值
    【解决方案3】:

    尝试以下代码,它适用于我的项目:

    //start ajax request
    $.ajax({
        url: "data.json",
        //force to handle it as text
        dataType: "text",
        success: function(data) {
    
            //data downloaded so we call parseJSON function 
            //and pass downloaded data
            var json = $.parseJSON(data);
            //now json variable contains data in json format
            //let's display a few items
            for (var i=0;i<json.length;++i)
            {
                $('#results').append('<div class="name">'+json[i].name+'</>');
            }
        }
    });
    

    【讨论】:

      【解决方案4】:
       $(document).ready(function () {
          $.ajax({ 
              url: '/functions.php', 
              type: 'GET',
              data: { get_param: 'value' }, 
              success: function (data) { 
               for (var i=0;i<data.length;++i)
               {
               $('#cand').append('<div class="name">data[i].name</>');
               }
              }
          });
      });
      

      【讨论】:

        【解决方案5】:

        使用该代码。

             $.ajax({
        
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Your URL",
                    data: "{}",
                    dataType: "json",
                    success: function (data) {
                        alert(data);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
        

        【讨论】:

          【解决方案6】:

          好的,我遇到了同样的问题,我通过从 [{"key":"value"}] 中删除 [] 来修复它:

          1. 在您的 php 文件中确保您像这样打印
          echo json_encode(array_shift($your_variable));
          
          1. 在你的成功函数中这样做
           success: function (data) {
              var result = $.parseJSON(data);
                ('.yourclass').append(result['your_key1']);
                ('.yourclass').append(result['your_key2']);
                 ..
              }
          

          如果你愿意,你也可以循环播放它

          【讨论】:

            【解决方案7】:

            我同意上述所有解决方案,但要指出这个问题的根本原因是,上述所有代码中的主要角色是这行代码:

            dataType:'json'
            

            当您错过这一行(这是可选的)时,从服务器返回的数据将被视为全长字符串(这是默认返回类型)。添加这行代码通知jQuery将可能的json字符串转换为json对象。

            如果需要 json 数据对象,任何 jQuery ajax 调用都应该指定这一行。

            【讨论】:

              【解决方案8】:
              var jsonP = "person" : [ { "id" : "1", "name" : "test1" },
                { "id" : "2", "name" : "test2" },
                { "id" : "3", "name" : "test3" },
                { "id" : "4", "name" : "test4" },
                { "id" : "5", "name" : "test5" } ];
              
              var cand = document.getElementById("cand");
              var json_arr = [];
              $.each(jsonP.person,function(key,value){
                  json_arr.push(key+' . '+value.name  + '<br>');
                  cand.innerHTML = json_arr;
              });
              
              <div id="cand">
              </div>
              

              【讨论】:

                【解决方案9】:

                Json 数据

                data = {"clo":[{"fin":"auto"},{"fin":"robot"},{"fin":"fail"}]}
                

                检索时

                $.ajax({
                  //type
                  //url
                  //data
                  dataType:'json'
                }).done(function( data ) {
                var i = data.clo.length; while(i--){
                $('#el').append('<p>'+data.clo[i].fin+'</>');
                }
                });
                

                【讨论】:

                  【解决方案10】:

                  以下是您在 JavaScript 中的操作方法,这是一种非常有效的方法!

                  let data = "{ "name": "mark"}"
                  let object = JSON.parse(data);
                  console.log(object.name);
                  

                  这将打印标记

                  【讨论】:

                  • 对我帮助很大,非常感谢
                  【解决方案11】:
                  $.ajax({
                    url: '//.xml',
                    dataType: 'xml',
                    success: onTrue,
                    error: function (err) {
                        console.error('Error: ', err);
                    }
                  });
                  
                  $('a').each(function () {
                    $(this).click(function (e) {
                        var l = e.target.text;
                        //array.sort(sorteerOp(l));
                        //functionToAdaptHtml();
                    });
                  });
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2010-10-02
                    • 2016-03-19
                    • 2014-06-12
                    • 2011-06-03
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多