如果提交表單 給伺服器,當伺服器處理完成之後,響應給瀏覽器,你發現瀏覽器顯示頁面時,閃爍了一下。
這種方式不是非同步提交,而是同步提交,該閃爍是頁面整體重新整理了。
1.能夠理解非同步的概念
2.能夠了解原生js的ajax
3.能夠使用jQuery的$.get()
進行存取
4.能夠使用jQuery的$.post()
進行存取
5.能夠使用jQuery的$.ajax()
進行存取
6.能夠使用jQuery3.0的$.get()
新增簽名進行存取
7.能夠使用jQuery3.0的$.post()
新增簽名進行存取
8.能夠掌握json的三種資料格式
9.能夠使用json轉換工具Jackson進行json格式字串的轉換
10.能夠完成使用者名稱是否存在的查重案例
11.能夠完成自動補全的案例
(1)瀏覽器和伺服器之間資料傳輸方式
1:同步方式
2:非同步方式
(2)兩種方式有什麼不同?
同步請求,伺服器響應時,頁面整體重新整理(響應了整個頁面)
非同步請求,伺服器響應時,頁面區域性重新整理(響應了字串或者json)
(3)非同步請求有什麼優點?
非同步請求可以提高使用者的體驗性
(4)非同步請求應用場景有哪些?
a:使用者名稱檢測
b:搜尋的自動補全
c:頁面的區域性重新整理
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script type="text/javascript">
// 原生的ajax開發:
// 1)建立Ajax引擎物件
// 2)為Ajax引擎物件繫結監聽(監聽伺服器已將資料響應給引擎)
// 3)繫結提交地址
// 4)傳送請求
// 5)接受響應資料
//
function clickFn() {
//1)建立Ajax引擎物件
var xmlHttp = new XMLHttpRequest();
//2)為Ajax引擎物件繫結監聽(監聽伺服器已將資料響應給引擎)
xmlHttp.onreadystatechange = function (ev) {
//如果state值是4,說明收到響應資料
//如果狀態碼是200.說明伺服器正常響應
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
// 5)接受響應資料
//獲取響應資料
alert(xmlHttp.responseText); //response.getWriter().write("hello")
}
}
//3)繫結提交地址
//參1:表示請求方式
// 參2:表示伺服器的資源存取路徑,不用加專案名,
// 參3:表示是否非同步,true是非同步
xmlHttp.open("get","s1",true);
//4)傳送請求
xmlHttp.send();
}
</script>
</head>
<body>
<!--設計一個按鈕,一點選這個按鈕,就向伺服器發出非同步請求-->
<input type="button" value="點我,發出非同步請求" onclick="clickFn()"/>
</body>
</html>
src\com\wzx\pack01_ajax\BaseAjaxServlet.java
@WebServlet("/s1")
public class BaseAjaxServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//響應給瀏覽器
System.out.println("s1 doGet");
//響應
response.getWriter().println("hello");
}
}
$.get(url, [data], [callback], [type])
格式: 1: "username=wzx&password=123"
2:json串格式:"text" "json"
$.get(
"s2",
"username=wzx&password=123",
function(data){ //這個data就是伺服器返回的字串
//處理資料
},
"text"
);
$.post(
"s2",
"username=wzx&password=123",
function(data){ //這個data就是伺服器返回的字串 var data = []
//處理資料
},
"json"
);
var url = "s2";
var param = "username=lft&password=123";
var func = function(data){
};
var type = "json";
$.post(url,param,func,type);
(1)在點選事件中呼叫get請求
(2)在伺服器端返回json或者字串資料
(3)在回撥函數中編寫業務邏輯
web\1-juqery-get_post_index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="jquery-3.3.1.js"></script>
<script type="text/javascript">
function clickFn() {
//向伺服器傳送非同步請求
$.post(
"s2",
"username=寶強x&password=123",
function (data) {
alert(data);
},
"text"
);
}
</script>
</head>
<body>
<!--設計一個按鈕,一點選這個按鈕,就向伺服器發出非同步請求-->
<input type="button" value="點我,發出jquery$.get非同步請求" onclick="clickFn()"/>
</body>
</html>
src\com\wzx\pack02_jquery_ajax\Demo2Servlet.java
@WebServlet(name = "Demo2Servlet",urlPatterns = "/s2")
public class Demo2Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解決請求亂碼
request.setCharacterEncoding("UTF-8");
//1:接收引數
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username:"+username);
System.out.println("password:"+password);
// System.out.println(1/0);
//解決響應亂碼
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("你好 ajax!");
}
}
(1)什麼是$.ajax
請求方式
這種方式是將$.get
和$.post
方式合成一種請求
(2)如何呼叫
$.ajax({鍵:值,鍵:值,鍵:值});
web\2-jquery-ajax-index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="jquery-3.3.1.js"></script>
<script type="text/javascript">
function clickFn() {
$.ajax({
url:"s2",
async:true,
data:"username=bingbing&password=456",
type:"post",
dataType:"text",
success:function (data) {
alert(data)
},
error:function () {
alert("伺服器發生了錯誤")
}
});
}
</script>
</head>
<body>
<!--設計一個按鈕,一點選這個按鈕,就向伺服器發出非同步請求-->
<input type="button" value="點我,發出ajax非同步請求" onclick="clickFn()"/>
</body>
</html>
$.get({鍵:值,鍵:值});
$.post({鍵:值,鍵:值});