详细介绍JavaScript解析 JSON 及 XML的示例代码

互联网 17-3-9
  书写AJAX的时候,经常需要解析从服务器返回的一串字符串,这里简单介绍服务器返回字符的两种格式,及JS对它们的解析方法。

  一、JSON

var   obj   =      {          id:   2  ,          name:   '  n  '      };

    这样就定义了对象 obj, 它有两个公共属性id和name,可以用 obj.id 的方式直接访问其属性值。

    从服务器获取数据时往往不止一个对象,这就需要用到对象数组,JS中对象数组可以用 [] 来定义,如下:

    var   objs   =   [{ id:   1  , name:   '  n_1  '   }, { id:   2  , name:   '  n_2  '  }];          alert(objs[  0  ].id);

    这样就定义了对象数组 objs, 它包含两个对象,可以用索引来访问,如 objs[0] 将引用到第一个对象。    到这里你或许已经想到服务器返回的字符串格式是怎样的,但字符串毕竟是字符串,我们需要将其转换为可以利用JS操作的变量。    这就用到 eval 函数,请看下例:

   var   objs   =   eval(  "  [{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}]  "  );          alert(objs[  0  ].id);   //   return 1

    以下用AJAX做一个简单的例子。新建一个网站,在根目录下添加一个一般处理程序(GetJson.ashx),代码如下:

GetJson.ashx<%@ WebHandler Language="C#" Class="GetJson" %>usingusing System.Web;public class GetJson : IHttpHandler { public void ProcessRequest (HttpContext context) { string str = "[{id:1, name:'n_1'}, {id:2, name:'n_2'}]"; context.Response.ContentType = "text/plain"; context.Response.Write(str); } public boolgetreturn false; } }}

在Default.aspx 文件中添加测试脚本:

      <  script type  =  "  text/javascript  "  >            function   getJson() {                //   在IE7下测试通过,IE6下必须创建 new ActiveXObject("MSXML2.XMLHTTP.6.0")                var   request   =     new   XMLHttpRequest();              request.open(  '  GET  '  ,   '  GetJson.ashx  '  );              request.onreadystatechange   =     function  () {                    if   (request.readyState   ==     4     &&   request.status   ==     200  ) {                        var   objs   =   eval(request.responseText);                      alert(objs.length);   //   2                      alert(objs[  0  ].id);    //   1                      alert(objs[  1  ].name);  //   'n_2'                  }              }              request.send(  null  );          }        <  /  script>

再添加一个测试按钮即可以看到效果:

<input type="button" value="GetJson" onclick="getJson();" />

  二、XML

    JS对XML的解析是基于DOM的,对HTML的DOM熟悉的话,解析XML就没什么困难了。

    在根目录下添加一个新的一般处理程序(GetXml.ashx),代码如下:

    在Default.aspx页面添加以下脚本:

        function   getXml() {                //   在IE7下测试通过,IE6下必须创建 new ActiveXObject("MSXML2.XMLHTTP.6.0")                var   request   =     new   XMLHttpRequest();              request.open(  '  GET  '  ,   '  GetXml.ashx  '  );              request.onreadystatechange   =     function  () {                    if   (request.readyState   ==     4     &&   request.status   ==     200  ) {                        var   xmlDoc   =   request.responseXML;                        var   root   =   xmlDoc.documentElement;                        var   elements   =   root.getElementsByTagName(  "  Person  "  );                      alert(elements.length);   //   2                        //   elements[0].firstChild 引用到第一个Person节点的Id节点                        //   elements[0].firstChild.firstChild 引用到Id节点的文本节点                        //   因为文本节点是元素节点的第一个子节点                      alert(elements[  0  ].firstChild.firstChild.nodeValue);   //   1                      alert(elements[  1  ].lastChild.firstChild.nodeValue);    //   'n_2'                  }              }              request.send(  null  );          }

    注意到代码段:var root = xmlDoc.documentElement;

    主要是为了消除IE6和其他浏览器的兼容问题,在其他浏览器下,允许request.responseXML.getElementsByTagName("Person");

    添加测试按钮:

<input type="button" value="GetXml" onclick="getXml();" />

以上就是详细介绍JavaScript解析 JSON 及 XML的示例代码的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:详细介绍Spring使用多个xml配置文件的代码实例

相关资讯