JQuery?AJAX操作代碼
1、服務器端
1.1、創(chuàng)建web項目
在項目根目錄下創(chuàng)建js文件夾并將JQuery文件放入其中:

1.2、服務器端代碼
封裝返回結果的實體類:
public class Result {
private Integer code;//錯誤碼
private String msg;//提示信息
private String data;//具體內容
//…… getter/setter方法、默認構造方法、全參構造方法
@Override
public String toString() { //返回JSON字符串
return "{\"Result\":{"
+ "\"code\":"
+ code
+ ",\"msg\":\""
+ msg + '\"'
+ ",\"data\":\""
+ data + '\"'
+ "}}";
}
}處理前端頁面請求的Servlet
@WebServlet(urlPatterns = "/demoServlet")
public class DemoServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
ServletInputStream is = request.getInputStream();
String str = inputStream2String(is);
PrintWriter out = response.getWriter();
out.write("server received data is :" + str);
out.flush();
out.close();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
PrintWriter out = response.getWriter();
out.write(new Result(200, "OK", name + ":" + pwd).toString());
out.flush();
out.close();
}
public String inputStream2String(InputStream is) { //字節(jié)流轉為字符流
try (BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));) {
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
return buffer.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}2、客戶端
2.1、$.ajax([options])
jQuery 底層 AJAX 實現,其返回其創(chuàng)建的 XMLHttpRequest 對象。大多數情況下無需直接操作該函數,除非需要操作不常用的選項,以獲得更多的靈活性。 $.ajax() 方法的參數是一個鍵值對形式的JSON對象。最簡單的情況下, $.ajax() 可以不帶任何參數直接使用。
如果要處理$.ajax()得到的數據,則需要使用回調函數:
- beforeSend:在發(fā)送請求之前調用,并且傳入一個XMLHttpRequest作為參數。
- error:在請求出錯時調用(比如:服務器端出錯拋出異常)。傳入XMLHttpRequest對象,描述錯誤類型的字符串以及一個異常對象(如果有的話)
- dataFilter:在請求成功之后調用。傳入返回的數據以及"dataType"參數的值。并且必須返回新的數據(可能是處理過的)傳遞給success回調函數。
- success:當請求之后調用(只要求請求成功,不管服務器端的業(yè)務是否成功)。傳入返回后的數據,以及包含成功代碼的字符串。
- complete:當請求完成之后調用這個函數,無論成功或失敗。傳入XMLHttpRequest對象,以及一個包含成功或錯誤代碼的字符串。
常用的options有:
- async:(默認: true) 默認設置下,所有請求均為異步請求。如果需要發(fā)送同步請求,請將此選項設置為 false。注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執(zhí)行。
- type:請求方式, 默認為 “GET”。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。
- url:(默認: 當前頁地址) 發(fā)送請求的地址。
- contentType:(默認: “application/x-www-form-urlencoded”) 發(fā)送信息至服務器時內容編碼類型。默認值適合大多數情況。
- data:發(fā)送到服務器的數據。將自動轉換為請求字符串格式。GET 請求中將附加在 URL 后。必須為 Key/Value 格式。如果為數組,jQuery 將自動為不同值對應同一個名稱。如 {foo:[“bar1”, “bar2”]} 轉換為 ‘&foo=bar1&foo=bar2’。
- dataType:預期服務器返回的數據類型。如果不指定,jQuery 將自動根據 HTTP 包 MIME 信息來智能判斷??捎弥?
- “text”: 返回純文本字符串
- “json”: 返回 JSON 數據 。
- “xml”: 返回 XML 文檔,可用 jQuery 處理。
- “html”: 返回純文本 HTML 信息;包含的script標簽會在插入dom時執(zhí)行。
- “script”: 返回純文本 JavaScript 代碼。不會自動緩存結果。除非設置了"cache"參數。’’‘注意:’’'在遠程請求時(不在同一個域下),所有POST請求都將轉為GET請求。(因為將使用DOM的script標簽來加載)
- “jsonp”: JSONP 格式。使用 JSONP 形式調用函數時,如 “myurl?callback=?” jQuery 將自動替換 ? 為正確的函數名,以執(zhí)行回調函數。
示例:
前面頁面代碼:
<%@ page pageEncoding="UTF-8" %>
<html>
<head>
<script src="${pageContext.request.contextPath}/js/jquery.js"></script>
<script type="text/javascript">
$(function () {
$("#btn1").click(function () {
$.ajax({
async:true,
type:'GET',
url:'${pageContext.request.contextPath}/demoServlet',
data:{'name':'zhangsan','pwd':'1234'},
dataType:'json',
success:function (data) {
console.info(data);
},
error:function () {
console.info("請求失敗");
}
});
});
$("#btn2").click(function () {
$.ajax({
type:"POST",
url:'${pageContext.request.contextPath}/demoServlet',
data:"HelloWorld",
dataType:'text',
success:function (data) {
console.info(data);
}
})
});
});
</script>
</head>
<body>
<button id="btn1">Get請求后臺數據</button>
<button id="btn2">Post請求后臺數據</button>
</body>
</html>運行
單擊"Get請求后臺數據",結果:

單擊"Post請求后臺數據",結果:

2.2、$…get(url, [data], [callback], [type])
通過遠程 HTTP GET 請求載入信息。參數
- url:待載入頁面的URL地址
- data: (可選)待發(fā)送 Key/value 參數。
- callback :(可選)載入成功時回調函數。
- type: (可選)返回內容格式,xml, html, script, json, text, _default。
示例:
前端頁面代碼:
<%@ page pageEncoding="UTF-8" %>
<html>
<head>
<script src="${pageContext.request.contextPath}/js/jquery.js"></script>
<script type="text/javascript">
$(function () {
$("#btn1").click(function () {
$.get('${pageContext.request.contextPath}/demoServlet',
{'name': 'zhangsan', 'pwd': '1234'},
function (data) {
console.info(data);
},
'json'
);
});
</script>
</head>
<body>
<button id="btn1">Get請求后臺數據</button>
</body>
</html>2.3、$.getJSON(url, [data], [callback])
通過 HTTP GET 請求載入 JSON 數據。
參數
- url:發(fā)送請求地址。
- data :(可選)Map待發(fā)送 Key/value 參數。
- callback :(可選)載入成功時回調函數。
示例:
前端頁面代碼:
<%@ page pageEncoding="UTF-8" %>
<html>
<head>
<script src="${pageContext.request.contextPath}/js/jquery.js"></script>
<script type="text/javascript">
$(function () {
$("#btn1").click(function () {
$.getJSON('${pageContext.request.contextPath}/demoServlet',
{'name': 'zhangsan', 'pwd': '1234'},
function (data) {
console.info(data);
}
);
});
</script>
</head>
<body>
<button id="btn1">Get請求后臺數據</button>
</body>
</html>2.4、$.post(url, [data], [callback], [type])
通過遠程 HTTP POST 請求載入信息。參數
- url:發(fā)送請求地址。
- data:(可選)待發(fā)送 Key/value 參數。
- callback: (可選)發(fā)送成功時回調函數。
- type:(可選)返回內容格式,xml, html, script, json, text, _default。
示例:
前面頁面代碼:
<%@ page pageEncoding="UTF-8" %>
<html>
<head>
<script src="${pageContext.request.contextPath}/js/jquery.js"></script>
<script type="text/javascript">
$("#btn2").click(function () {
$.post('${pageContext.request.contextPath}/demoServlet',"HelloWorld",
function (data) {
console.info(data);
},
'text'
)
});
});
</script>
</head>
<body>
<button id="btn2">Post請求后臺數據</button>
</body>
</html>注意
使用AJAX時可能會報這樣的警告:
Synchronous XMLHttpRequest on the main thread is deprecated
原因是ajax執(zhí)行了同步操作,即async設置為False,當然它并不影響程序的運行,但建議還是改成True為好(不設置默認為True)。
到此這篇關于JQuery AJAX的文章就介紹到這了,更多相關JQuery AJAX內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
jQuery Timelinr實現垂直水平時間軸插件(附源碼下載)
jquery.timelinr.js是一款效果非常炫酷的jQuery時間軸插件。下面腳本之家小編給大家介紹jQuery Timelinr實現垂直水平時間軸插件,需要的朋友參考下2016-02-02

