zoukankan      html  css  js  c++  java
  • ajax和json

    一、json的格式

    1、var temp = {"aa":1, "bb":2, "cc":3};  // 带变量的json

    2、{"aa":1, "bb":2, "cc":3};    // 不带变量的json

    3、var temp = [{"aa":1, "bb":2, "cc":3},{"aa":1, "bb":2, "cc":3},{"aa":1, "bb":2, "cc":3}];  // 数组json

    4、var temp = {"ab":{"platform_id":"qqq","platform_name":"sss"}, "cd":{"platform_id":"eee","platform_name":"fff"}}

    二、读取json

    注:

    1、如果是带变量名的json

    var temp = {"aa":1, "bb":2, "cc":3};  // 带变量的json
    
    ajax("sss.json", function(data){
    
      // 将字符串转成对象,但json有变量名,转成对象就不用在给对象起名
    
      eval(data);
    
      for(var key in temp){  // temp为json内的变量名也是就是data对象的名
    
        alert(key)  // 输出aa, bb, cc
    
        alert(temp[key]);  // 输入 1,2,3
    
      }
    
    });
    

    2、如果json里没有声名变量

    {"aa":1, "bb":2, "cc":3};
    
    ajax("http://www.renren.com/data/json/data2.json", function(data){
        // json没有变量
        eval("var temp =" + data);    // 将字符串变成对象时赋个对象名
        for(var key in temp){
            alert(key);     // 返回 a b c
        }
    
        for(var key in temp){
            alert(temp[key]);   // 返回 12 34 56
        }
    }
    

    3、访问数组json

    ajax("http://www.renren.com/data/json/data3.json", function(data){
    	var str = "";
    	// 读数据的json
    	eval("var temp = " + data);
    	
    	for(var key in temp){
    		for(var k1 in temp[key]){
    			alert(k1);	// 每组json中的key	返回 platform_id platform_name platform_id platform_name platform_id platform_name
    		}
    	}
    	
    	for(var key in temp){
    		str += temp[key].platform_id + "<br />";	// 获取数据指定key中的数据	
    	}
    	
    	getID("da").innerHTML = str;
    
    }, function(){
    	alert("创建失败");
    });
    

     4、获取json中的数组长度

    var temp = {a:12, b:34, c:56};
    ajax("http://www.renren.com/data/json/data1.json", function(data){
    	var str = "";
    	var s = getLen(data);
    	alert(s);		// 返回3
    
    }, function(){
    	alert("创建失败");
    });
    
    function getLen(str){
    	eval(str);
    	var jsonLength=0;
    	for(var key in temp){
    		jsonLength++;
    	}
    	return jsonLength;
    }
    

     示例:

    function ajax(url, fnSucc, fnFaild){
    	//1.创建Ajax对象
    	var oAjax=null;		
    	if(window.XMLHttpRequest){
    		oAjax=new XMLHttpRequest();
    	}
    	else{
    		oAjax=new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	oAjax.open('GET', url, true);
    	oAjax.send();
    
    	oAjax.onreadystatechange=function (){
    		if(oAjax.readyState==4){			
    			if(oAjax.status==200){				
    				fnSucc(oAjax.responseText);
    			}
    			else{				
    				if(fnFaild){
    					fnFaild(oAjax.status);
    				}
    			}
    		}
    	};
    };
    
    function getID(id){
    	return document.getElementById(id);	
    }
    
    ajax("sss.json", function(str){
    	var newTd = "";
    	var newTh;
    	var byId = getID("dataTab");
    			
    	eval(str);	// 将回调数据转成对
    	// 表内容
    	for(var key in temp){
    		newTd += "<tr><td>" + key + "</td><td>" + temp[key]['platform_id'] + "</td><td>" + temp[key]['platform_name'] + "</td></tr>";
    	}
    	byId.innerHTML = newTd;
    	
    }, function(){
    	alert("创建失败");
    });
    

    二、jquery中获取json和jsonp

    1、无变量名json

    {"aa":1, "bb":2, "cc":3}  // rrdata.json
    
    $.ajax({
        url:"rrdata.json",
        type: "get",
        dataType:"json",        // 如果没有数据类型json中要写变量
        success: function(data){  // 返回的是object,而不是字符串所以不用eval data
            for(var i in data){
                alert(data[i]['platform_id']);    
            }
        }
    });
    

    2、有变量名的json

    var data = {"aa":1, "bb":2, "cc":3}
    
    $.ajax({
        url:"http://www.renren.com/data/rrdata.json",
        type: "get",
        // dataType:"json",        // 如果有变量名就可以不用写请求的数据类型
        success: function(data){
            alert(data);
            eval(data);
            for(var i in temp){
                alert(temp[i]['platform_id']);    
            }
        }
    });

    3、跨域请求jsonp

    // 注意请求的json文件是不是以函数参数来加载json, gets('{"aa":1, "bb":2, "cc":3}');
    function gets(data){ alert("aa"); alert(data); } $(function(){ $.ajax({ url:"http://interface.game.renren.com/ActivityCenter/?method=UserInfo.getReward2&catalog=plugins&gameid=lstx&aname=kuanian&aid=1026&uid=%22+getCookie%28%22id%22%29+%22&type=%22+type", type: "post", jsonpCallback:"gets", dataType:"jsonp", success: function(data){ eval(data); } }); });
  • 相关阅读:
    Yii2——MYSQL操作
    Git之路——Git的使用
    python之路——爬虫实例
    PHP之路——验证码实现
    PHP之路——PHPExcel使用
    PHP之路——Apache启动失败查看日志
    pycharm——常用快捷键操作
    python_常用断言assert
    python通过一句话判断闰年的代码
    通过Python实现mysql查询数据库实例
  • 原文地址:https://www.cnblogs.com/couxiaozi1983/p/2861431.html
Copyright © 2011-2022 走看看