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>