zoukankan      html  css  js  c++  java
  • Servlet返回的数据js解析问题

    Servlet返回的数据js解析问题

    方式1:Json

    接收函数:ajax.responseText后面没括号

    其实在之前所说的ajax中还遗留了一些问题就是,Servlet返回给js的数据是如何被js解析的呢?

    之前只是发送了一句话,所以他就以html的格式进行解析就成功了,但是在实际中我们往往发送的数据是存在一个对象当中的又或者是一组对象当中的,我们应该如何发送呢?

    json:js当中有一种有一种结构就是json,说白了就是键值对。

    例如下面的:

    { "firstName":"John" , "lastName":"Doe" }

    我们可以在Servlet将属性与值进行拼接,得到json格式的字符串,这样js中就能以这样的格式进行数据的解析了。

    类似于下面这样:

    resp.getWriter().write("{name:"+u.getHeroName()+ 
                                    ",lifenum:"+u.getLifeNum()+
                                    ",type:"+u.getType()+
                                    ",desc:"+u.getDesc()
                    +"}")

    但是对于懒癌来说这样的方式是极不友好的,所以就要说到强大的jar包了。

    有一款名为gson的jar包可以帮你完成拼接的工作:https://pan.baidu.com/s/1-_lhLxGspqCis5CAPKt-GA

    对于使用就是你直接将对象丢进去就好,它会自动帮你转为json格式。

    然后又有问题来了,json的数据给js有什么用,我们一般操纵的是对象呀!

    别慌,eval帮你解决

     方式2:XML进行解析

    接收函数:ajax.responseXML后面没括号

    可以将用户数据以Xml进行发送然后js也以xml格式解析

    用户数据的xml可以写在jsp中,然后js的跳转(open函数)就不用跳转到Servlet中而是jsp中找用户数据

    用户数据jsp:

    <%@ page language="java" contentType="text/xml; charset=utf-8"%>
    <user>
        <name>李四</name>
        <pwd>123</pwd>
    </user>

    ajax接收数据jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
        function getXML(){
            //创建ajax引擎对象
                var ajax;
                if(window.XMLHttpRequest){//火狐
                    ajax=new XMLHttpRequest();
                }else if(window.ActiveXObject){//ie
                    ajax=new ActiveXObject("Msxml2.XMLHTTP");
                }
            //复写onreadystatechange
                ajax.onreadystatechange=function(){
                    //判断Ajax状态吗
                    if(ajax.readyState==4){
                        //判断响应状态吗
                        if(ajax.status==200){
                            //获取响应内容
                            var doc=ajax.responseXML;
                            //处理响应内容
                                //获取元素对象
                                alert(doc.getElementsByTagName("name")[0].innerHTML);
                        }
                    }
                }
            //发送请求
                ajax.open("get","xml.jsp",true);
                ajax.send(null);
        }
    
    
    </script>
    </head>
    <body>
        <h3>XML数据格式学习</h3>
        <hr>
        <input type="button" value="测试XML" onclick="getXML()" />
        
        
        
    </body>
    </html>

    但是这种方式没有json好,所以推荐用json方式进行进行解析会更好一点。

    不一样的烟火
  • 相关阅读:
    StringTemplate.Net 学习笔记(9):深入了解模板组文件
    StringTemplate.Net 学习笔记(6):自定义输出格式
    StringTemplate.Net 学习笔记(4):表达式元素语法(下)
    StringTemplate.Net 学习笔记(10):模板组继承及模板组接口
    StringTemplate.Net 学习笔记(3):表达式元素语法(上)
    StringTemplate.Net 学习笔记(7):加载模板文件
    StringTemplate.Net 学习笔记(8):加载模板组文件
    十天学会ASP.Net——(10)
    十天学会ASP.Net——(6)
    十天学会ASP.Net——(7)
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11799059.html
Copyright © 2011-2022 走看看