ajax与json


创建一个XHR对象,在IE中会遇到3种不同版本的XHR对象,Firefox,Chrome,Safari,Opera等都支持原生的XHR对象,在这些浏览器中创建XHR对象要使用XMLHttpRequest构造函数。例如,创建一个通用的XHR对象。

 function createXHR(){
        if(typeof XMLHttpRequest !="undefined"){
          return new XMLHttpRequest();
        }else if(typeof ActiveXObject !="undefined"){
          var versions=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHTTP"];
          for(var i=0;i<versions.length;i++){
             try{
                var xhr=new ActiveXObject(versions[i]);
                arguments.callee.activeXString=versions[i];
                return xhr;
             }catch(ex){
             
             }
          }
          return new ActiveXObject(arguments.callee.activeXString);
        }else{
          throw new Error("No XHR object available.");
        }
      }

在Ajax中,JSON对象有 parse()和stringify()两个方法、parse()方法接收两个参数json文本和一个可选的过滤函数、 parse()方法会返回传入数据的一个对象表示,即:

通过parse()方法,会把Json格式的字符串转换成相应的对象;

 var jsonText="{\"name\":\"test\",\"age\":22,\"author\":true}";
      var object=JSON.parse(jsonText,function(key,value){
         switch(key){
           case "age":return value+1;
           case "author":return undefined;
           default: return value;
         }
      });
      alert("name:"+object.name+"age:"+object.age+"author:"+object.author);
以上代码、过滤函数会为每个 "age"值加1,会移除数据中的“author”键、其它值原样返回。

如果字符串保存的是多个json对象,则可以以以下方式进行保存:

 var testDemo="[{\"name\":\"test1\",\"email\":\"http://www.baidu.com\"},{\"name\":\"test2\",\"email\":\"http://www.baidu2.com\"},{\"name\":\"test3\",\"email\":\"http://www.baidu3.com\"}]";
      var contacts=JSON.parse(testDemo);
      var list=document.getElementById("contacts");
      for(var i=0;i<contacts.length;i++){
        var li=document.createElement("li");
        li.innerHTML="<a href=\"mailto:"+contacts[i].email+"\">"+contacts[i].name+"</a>"
        list.appendChild(li);
      }

首先把json格式的字符串通过parse()方法转换成对象,然后为每个对象依次创建li并输出到li元素上。

stringify()方法则是把一个对象转换成JSON字符串。这个方法接收3个参数:要序列化的对象,可选的替换函数(用于替换未受支持的JSON值)和可选的缩进说明符。

例如:

 var contact={
        name:"luoxufeng",
        email:"http://www.test.com/"
      };

var jsonText=JSON.stringify(contact);
alert(jsonText);


使用Post()请求并将JSON文本传递给Send()方法,可以将JSON数据发送给服务器。例如:

 var xhr=createXHR();
      var contact={
        name:"luoxufeng",
        email:"http://www.test.com/"
      };
      xhr.onreadystatechange=function(){
        if(xhr.readyState==4){
          if(xhr.status>=200){
             alert(xhr.responseText);
          }
        }
      };
      
      xhr.open("post","/ajax/Json_stringify.aspx",true);
      xhr.send(JSON.stringify(contact));

注:createXHR()即创建XHR对象,即本篇文章的第一个例子。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值