使用原生javascript和jQuery解析json数据 jQuery ajax - getJSON() 方法

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。

JSONM文件中包含了关于“名称”和“值”的信息。

有时候我们需要读取JSON格式的数据文件,在jQuery中可以使用Ajax或者 $.getJSON()方法实现。

语法:
jQuery.getJSON(url,data,success(data,status,xhr))
等价于:
$.ajax({
  url: url,
  data: data,
  success: callback,
  dataType: json
});

一,jQuery.Ajax

json数据是一种经型的实时数据交互的数据存储方法,使用到最多的应该是ajax与json配合。

下面我总结jquery处理json数据方法。

1)$.each(...)

$('#button1').click(function(){
        $.ajax({
            type:"GET",
            url:"data.txt",
            dataType:"json",
            success:function(data){

                var string="<ul>";
                //i表示在data中的索引位置,n表示包含的信息的对象
                $.each(data,function(i,n){
                    //获取对象中属性为optionsValue的值                
                    string+="<li>"+n["optionValue"]+"</li>";
                });
                string+="</ul>";
                $('#result').append(string);
            }
        });
        return false;
    });

2)eval( data)

这种处理的方式将传递过来的数据直接解析为json数据,也就是说这里的前台js代码可能直接把这些数据解析成json对象数据,而并非字符串数据,如data[0].demoData,这里就直接使用了这个json对象数据:

$('#button2').click(function(){
        $.ajax({
            type:"GET",
            url:"data.txt",
            dataType:"json",
            success:function(data){
                
                var myObject = eval( data);
                var string = '<table border = "1">';
                string += "<caption align='top'>使用eval()解析数据</caption>";

                string += "<tr><td>"+"optionKey"+"</td>";
                string += "<td>"+"optionValue"+"</td></tr>";

                for(var i = 0; i<myObject.length;i++){     
                        string += "<tr><td>"+myObject[i].optionKey+"</td>";
                        string += "<td>"+myObject[i].optionValue+"</td></tr>";
                }
                string += '</table>'
                $('#result').empty().append(string);
            },
            error : function() {
                alert("抱歉!加载列表失败,请稍后重试!");    
            }
        });
    });

当中遇到一个小问题:Origin null is not allowed by Access-Control-Allow-Origin.

js文件中使用load()方法,而Chrome浏览器出于安全起见,不允许load本地文件

解决方法:http://www.windguo.com/javascript/261.html 或者直接只用IE8

var ens=document.querySelectorAll('.showen'); ens.forEach(function(item,index){ item.onclick=function(){ item.parentNode.nextElementSibling.style.display = "block"; } })