Ajax 是Web 开发一个流行的词汇,全称 Asynchronous JavaScript and XML,异步的JavaScript和XML 。是几种技术的强强联合。
Ajax如何工作
Ajax(即异步 JavaScript 和 XML)是一种 Web 应用程序开发的手段,它采用客户端脚本与 Web 服务器交换数据。
为什么要学习Ajax
使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
需要用到的jar包
XMLHttpRequest对象
直接在js里面 实例化一个
var xhr= new XMLHttpRequest();
XMLHttpRequest对象是整个Ajax开发的基础
提供客户端和服务器异步通信的能力
能够向服务器发出请求
能够接收服务器的返回页面
如需将请求发送到服务器,要使用 XMLHttpRequest 对象的 open() 和 send() 方法:
open(method,url,async)
method 表示请求的方式(get,post)
url 请求的路径
async 表示请示同步(false)还是异步(true)
同步 只允许一个线程运行 ajax请求 一直无反应 会导致页面卡顿 无法操作 可能会弹出 无响应窗口
如果 method为 post的时候 。
url的参数不建议使用?参数的方式传入值。
还要加上
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
要在send(方法传入的参数)
回调 onreadystatechange 事件
每当 readyState 改变时,就会触发 onreadystatechange 事件。 readyState 属性存有 XMLHttpRequest 的状态信息。
ajax调用后台action会回调该方法 多次
Action 推送数据回页面的三种方式
//如果是list 那么就使用
List list=new ArrayList();
JSONArray.fromObject(list);
//如果是object 那么就使用
Object ob=new Object();
JSONObject.fromObject(ob);
1:返回byte [] 数组 无需使用jackon Son
例:
2:没有返回值。需要加上
OutputStream os 推送过去
例:
@RequestMapping(value="/deleteEmp")
public void delete(String empno,OutputStream os) throws IOException{
empsev.deleteEmp(empno);
}
3:返回list(对象) 需要使用到 jackon 包
@ResponseBody
@RequestMapping(value="/ajax")
public PageParam ajax(String ename,Integer curPage) throws IOException{
//获取查询数据
PageParam pp= empsev.showEmp(ename, curPage);
return pp;
}
还需配置上消息转换器
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
<!-- application 可以在任意 form 表单里面 enctype 属性默认找到 -->
<value>application/x-www-form-urlencoded</value>
<value>application/json;charset=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>