• ajax返回的两种数据类型xml和json用法


    用xml传单个数据

    首先在servlet类里面写好要传的数据,Dog是模拟从数据库中提取的内容,

    用response.getwrite().append()传回数据,要注意表头<?xml version='1.0'?>不能写错,根是唯一的

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		//response.getWriter().append("Served at: ").append(request.getContextPath());
    		request.setCharacterEncoding("utf-8");
    		response.setCharacterEncoding("utf-8");
    		//模拟从数据库中提取的信息
    		Dog d = new Dog();
    		d.setName("name");
    		d.setZhuren("haha");
    		d.setAge(2);
    		d.setZhonglei("aaa");
    		
    		//用xml往回传
    		response.getWriter().append("<?xml version='1.0'?>");//表头
    		response.getWriter().append("<dog>");//根,是唯一的
    		response.getWriter().append("<name>"+d.getName()+"</name>");
    		response.getWriter().append("<zhuren>"+d.getZhuren()+"</zhuren>");
    		response.getWriter().append("<age>"+d.getAge()+"</age>");
    		response.getWriter().append("<zhonglei>"+d.getZhonglei()+"</zhonglei>");
    		response.getWriter().append("</dog>");
    		
    	}
    

    在jsp页面

    首先引用"js/jquery-1.11.1.min.js",在#d元素上写一个click事件,里面用ajax引擎处理数据,

    url是接收数据的路径,datatype是返回什么类型的数据

    •"xml": 返回 XML 文档,可用 jQuery 处理。
    •"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
    •"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
    •"json": 返回 JSON 数据 。
    •"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
    •"text": 返回纯文本字符串
    <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
    <script type="text/javascript">
    	$(document).ready(function(){
    		$("#d").click(function(){
    			$.ajax({
    				url:"textdog",//从textdog的servlet类中接受数据
    				data:{},
    				type:"POST",
    				dataType:"xml",//返回类型是xml
    				success:function(aaa){
    					//解析返回的aaa
    					var n = $(aaa).find("name").text();
    					var z = $(aaa).find("zhuren").text();
    					var a = $(aaa).find("age").text();
    					var zl =$(aaa).find("zhonglei").text();
    					//在页面上把数据显示在通过#u找到的元素里面
    					$("#u").append("<li>"+n+"</li>");
    					$("#u").append("<li>"+z+"</li>");
    					$("#u").append("<li>"+a+"</li>");
    					$("#u").append("<li>"+zl+"</li>");
    				}
    			});
    		});
    	});
    
    </script>
    

     演示结果:

     

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     用xml传集合,

    首先在servlet类里面写好要传的数据,跟单个基本一样,注意一下根,因为有多个dog 所以要用一个更大的chongwu作为根, 把所有的dog包起来

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		 
    		request.setCharacterEncoding("utf-8");
    		response.setCharacterEncoding("utf-8");
    		//模拟从数据库提取的数据
    		Dog d1 = new Dog();
    		d1.setName("日天");
    		d1.setZhuren("爸爸");
    		d1.setAge(1);
    		d1.setZhonglei("泰迪");
    		Dog d2 = new Dog();
    		d2.setName("拖拖");
    		d2.setZhuren("坨坨粑粑");
    		d2.setAge(2);
    		d2.setZhonglei("金毛");
    		Dog d3 = new Dog();
    		d3.setName("凡凡");
    		d3.setZhuren("凡凡爸爸");
    		d3.setAge(3);
    		d3.setZhonglei("哈士奇");
    		//将d1d2d3放到list中
    		ArrayList<Dog> list = new ArrayList<>();
    		list.add(d1);
    		list.add(d2);
    		list.add(d3);
    		//用xml把数据传到页面
    		response.getWriter().append("<?xml version='1.0'?>");//表头
    		//根,这里因为不只一个dog,所以我们用一个更大的chongwu包起来
    		response.getWriter().append("<chongwu>"); 
    		//遍历
    		for(Dog d : list){
    			response.getWriter().append("<dog>");
    			response.getWriter().append("<name>"+d.getName()+"</name>");
    			response.getWriter().append("<zhuren>"+d.getZhuren()+"</zhuren>");
    			response.getWriter().append("<age>"+d.getAge()+"</age>");
    			response.getWriter().append("<zhonglei>"+d.getZhonglei()+"</zhonglei>");
    			response.getWriter().append("</dog>");
    		}
    		response.getWriter().append("</chongwu>");
    }
    

    在jsp,同样先引入jar包

    要先把所有的dog放到一个dogs里面,相当于一个数组,

    <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
    	$("#d").click(function(){
    		$.ajax({
    			url:"textdog1",
    			data:{},
    			type:"POST",
    			dataType:"XML",
    			success:function(hhh){
    				//先把所有的dog放到dogs里面,相当于一个数组,不是一个对象
    				var dogs = $(hhh).find("dog");
    				//tb是找到的jquery对象
    				var tb =$("#tb");
    				//循环dogs
    				for(var i =0;i<dogs.length;i++){
    					var n = $(dogs).eq(i).find("name").text();		
    					var z = $(dogs).eq(i).find("zhuren").text();
    					var a = $(dogs).eq(i).find("age").text();
    					var lei =$(dogs).eq(i).find("zhonglei").text();
    					//把信息拼接
    					var tr = "<tr>";
    					tr += "<td>"+n+"</td>";
    					tr += "<td>"+z+"</td>";
    					tr += "<td>"+a+"</td>";
    					tr += "<td>"+lei+"</td>";
    					tr += "</tr>";
    					//把tr放到td中
    					$(tb).append(tr);
    				}
    			}
    		})
    	})
    })
    
    </script>
    

     结果演示:

     

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    用json传数据,首先导入json jar包,在servlet类里面写好要传的数据

    先把dog放在jo这个json中,然后把jo放到obj这个json中,在页面中用jo中的key就可以直接取值了

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//编码格式
    		request.setCharacterEncoding("utf-8");
    		response.setCharacterEncoding("utf-8");
    		
    		//
    		Dog d = new Dog();
    		d.setName("拖拖");
    		d.setZhuren("李哈哈");
    		d.setAge(2);
    		d.setZhonglei("金毛");
    		//把dog放到json中,用put赋值,key和value
    		JSONObject jo = new JSONObject();
    		jo.put("name",d.getName());
    		jo.put("zhuren", d.getZhuren());
    		jo.put("age", d.getAge());
    		jo.put("zhonglei", d.getZhonglei());
    		 
    		//obj这个json中再放jo这个json,obj里面放着jo
    		JSONObject obj = new JSONObject();
    		obj.put("dog", jo);
    		response.getWriter().append(jo.toString());
    	}
    

    在jsp中,把返回数据类型改为json,然后把数据显示在页面中

    <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
    <script type="text/javascript">
    	$(document).ready(function(){
    		$("#d").click(function(){
    			$.ajax({
    				url:"textjson1",//从textjson1的servlet类中接受数据
    				data:{},
    				type:"POST",
    				dataType:"JSON",//返回的数据类型是json
    				success:function(aaa){
    				//把数据显示在通过#u找到的元素里面	
    				 $("#u").append("<li>"+aaa.name+"</li>");
    				 $("#u").append("<li>"+aaa.zhuren+"</li>");
    				 $("#u").append("<li>"+aaa.age+"</li>");
    				 $("#u").append("<li>"+aaa.zhonglei+"</li>");
    				 
    				}
    			});
    		});
    	});
    
    </script>
    

     显示结果:

  • 相关阅读:
    藏!Java编程技巧之单元测试用例编写流程 原创 常意 阿里技术 2021-05-12
    时间,遵循rfc3339标准格式 unix时间戳
    微软面试题: LeetCode 240. 搜索二维矩阵 II 出现次数:3
    微软面试题: LeetCode 69. x 的平方根 出现次数:3
    微软面试题: LeetCode 138. 复制带随机指针的链表 出现次数:3
    微软面试题: LeetCode 384. 打乱数组 出现次数:3
    微软面试题: LeetCode 207. 课程表 出现次数:3
    微软面试题: LeetCode 98. 验证二叉搜索树 出现次数:3
    CF1537E2 Erase and Extend (Hard Version) 题解
    洛谷 P4332 [SHOI2014]三叉神经树 题解
  • 原文地址:https://www.cnblogs.com/liyh123/p/6493185.html
Copyright © 2020-2023  润新知