如何使用 jQuery / JavaScript 解析 JSON 数据?

Posted

技术标签:

【中文标题】如何使用 jQuery / JavaScript 解析 JSON 数据?【英文标题】:How to parse JSON data with jQuery / JavaScript? 【发布时间】: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 中?

【问题讨论】:

【参考方案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"] 中删除 [] 来修复它:

    在您的 php 文件中确保您像这样打印
echo json_encode(array_shift($your_variable));
    在你的成功函数中这样做
 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();
  );
);

【讨论】:

以上是关于如何使用 jQuery / JavaScript 解析 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用javascript触发jquery事件?

如何使用 JavaScript/JQuery 创建一个简单的地图 [重复]

如何在 jQuery 选择器中使用 JavaScript 变量?

如何使用 JavaScript 或 jQuery 更改数组内对象的值?

如何使用 JavaScript 或 jquery 选中/取消选中复选框?

如何使用 Javascript/jQuery 确定图像是不是已加载?