ajax用json实现数据传输
json(javascript object notation) 是一种轻量级的数据交换格式。它基于ecmascript的一个子集。 json采用完全独立于语言的文本格式,但是也使用了类似于c语言家族的习惯(包括c、c++、c#、java、javascript、perl、python等)。这些特性使json成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
使用json前需要先的导入json.jar包
传输单个对象:
新建一个 servlet
package com.itnba.maya.a; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.json.jsonobject; /** * servlet implementation class c */ @webservlet("/c") public class c extends httpservlet { private static final long serialversionuid = 1l; /** * @see httpservlet#httpservlet() */ public c() { super(); // todo auto-generated constructor stub } /** * @see httpservlet#doget(httpservletrequest request, httpservletresponse response) */ protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { request.setcharacterencoding("utf-8"); response.setcharacterencoding("utf-8"); //模拟从数据库中查处 dog a=new dog(); a.setname("小黄"); a.setage(5); a.setzl("哈士奇"); jsonobject obj=new jsonobject(); obj.put("name", a.getname()); obj.put("age", a.getage()); obj.put("zl", a.getzl()); jsonobject bb=new jsonobject(); bb.put("obj", obj); response.getwriter().append(bb.tostring()); } /** * @see httpservlet#dopost(httpservletrequest request, httpservletresponse response) */ protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { // todo auto-generated method stub doget(request, response); } }
效果如下:
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"> <title>insert title here</title> <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#k").click(function(){ $.ajax({ url:"c", data:{}, type:"post", datatype:"json", success:function(httpdata){ $("#x").append("<li>"+httpdata.obj.name+"</li>"); $("#x").append("<li>"+httpdata.obj.age+"</li>"); $("#x").append("<li>"+httpdata.obj.zl+"</li>") } }) }); }); </script> </head> <body> <span id="k">查看</span> <h1> <ul id="x"> </ul></h1> </body> </html>
效果如下:
传输集合或数组:
servlet:
package com.itnba.maya.a; import java.io.ioexception; import java.util.arraylist; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.json.jsonarray; import org.json.jsonobject; /** * servlet implementation class d */ @webservlet("/d") public class d extends httpservlet { private static final long serialversionuid = 1l; /** * @see httpservlet#httpservlet() */ public d() { super(); // todo auto-generated constructor stub } /** * @see httpservlet#doget(httpservletrequest request, httpservletresponse response) */ protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { request.setcharacterencoding("utf-8"); response.setcharacterencoding("utf-8"); //模拟从数据库中查出 dog a1=new dog(); a1.setname("小黄"); a1.setage(5); a1.setzl("哈士奇"); dog a2=new dog(); a2.setname("中黄"); a2.setage(6); a2.setzl("泰迪"); dog a3=new dog(); a3.setname("大黄"); a3.setage(7); a3.setzl("京巴"); arraylist<dog> list=new arraylist<dog>(); list.add(a1); list.add(a2); list.add(a3); jsonarray arr= new jsonarray(); //遍历集合 for(dog d:list){ jsonobject obj=new jsonobject(); obj.put("name", d.getname()); obj.put("age", d.getage()); obj.put("zl", d.getzl()); arr.put(obj); } response.getwriter().append(arr.tostring()); } /** * @see httpservlet#dopost(httpservletrequest request, httpservletresponse response) */ protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { // todo auto-generated method stub doget(request, response); } }
效果如下:
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"> <title>insert title here</title> <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#k").click(function(){ $.ajax({ url:"d", data:{}, type:"post", datatype:"json", success:function(httpdata){ for(var i=0;i<httpdata.length;i++){ var n=httpdata[i].name var a=httpdata[i].age var z=httpdata[i].zl var tr="<tr>" tr+="<td>"+n+"</td>" tr+="<td>"+a+"</td>" tr+="<td>"+z+"</td>" tr+="</tr>" $("#x").append(tr) } } }) }); }); </script> </head> <body> <span id="k">查看</span> <h1> <table width="100%" id="x" border="1px"> </table> </h1> </body> </html>
效果如下:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
上一篇: 详解如何在Vue里建立长按指令
推荐阅读
-
asp.net中利用Jquery+Ajax+Json实现无刷新分页
-
Jquery+Ajax+Json+存储过程实现高效分页
-
序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
-
ThinkPHP通过AJAX返回JSON的两种实现方法
-
用ajax实现预览链接可以看到链接的内容
-
用ajax实现读博客rss示例代码
-
用AJAX技术实现在自己Blog上聚合并显示朋友Blog的最新文章
-
ajax+json+Struts2实现list传递实例讲解
-
JSP中获取ExtJS.Ajax前台传递的JSON数据实现过程
-
Jquery+Ajax+Json实现分页显示附效果