第5章 jquery ajax(4)

目標(biāo)

  • 簡(jiǎn)介
  • load
  • ajax
  • get/post
  • 表單序列化

第1節(jié)課 ajax概念和例子

AJAX:Asynchronous JavaScript and XML
jquery ajax請(qǐng)求特點(diǎn)優(yōu)勢(shì):1)異步請(qǐng)求 2)局部刷新頁(yè)面

原生ajax例子

https://www.cnblogs.com/wangxuerui/p/5292421.html

readyState

        //0:send方法還沒(méi)有被調(diào)用
        //1:已經(jīng)調(diào)用了send方法谓苟,請(qǐng)求還在處理
        //2:send方法已完成 整個(gè)應(yīng)答已接收   
        //3:正在解析應(yīng)答
        //4:應(yīng)答解析完成

$.ajax制作用戶名驗(yàn)證功能

reg.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 src="<%=request.getContextPath()%>/js/jquery-1.11.2.min.js"></script>
<script>
   $(function(){
       $("#username").blur(function(){
           var username=$("#username").val();
           //ajax請(qǐng)求到后臺(tái),進(jìn)行驗(yàn)證协怒。而且攜帶著用戶名
           $.ajax({
               type: "POST",
               url: "<%=request.getContextPath()%>/TestLoadServlet",
               data: "username="+username,
               success: function(msg){
                 alert( "Data Saved: " + msg );
                 $("span").html(msg);
               }
            });
       })
   })
</script>
</head>
<body>
<form action="#">
<%--用戶注冊(cè)涝焙,用戶名失去焦點(diǎn)時(shí),用ajax請(qǐng)求后臺(tái)孕暇,判斷用戶名的合法性仑撞,在input框下面直接顯示是否合法 --%>
用戶名:<input type="text" name="username" id="username"/><span></span>
密碼:<input type="password" name="password" id="password"/>
確認(rèn)密碼:<input type="password" name="repassword" id="repassword"/>
<input type="submit" value="注冊(cè)"/>
</form>
</body>
</html>

TestLoadServlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username=request.getParameter("username");
        //jdbc進(jìn)行判斷
        response.getWriter().append("用戶名合法");
    }

第2節(jié)課

.load

載入遠(yuǎn)程 HTML 文件代碼并插入至 DOM 中。
1) 載入靜態(tài)頁(yè)

<script src="../js/jquery-1.11.2.min.js"></script>
<script>
    $(function () {
        $("#content").load("../chap04/05-表格操作.html");

    })
</script>

<h2>ajax load靜態(tài)頁(yè)面</h2>
<div id="content"> 
</div>

load動(dòng)態(tài)頁(yè)

1)test.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 src="<%=request.getContextPath()%>/js/jquery-1.11.2.min.js"></script>
<script>
    $(function() {
        $("#content").load("<%=request.getContextPath()%>/TestLoadServlet", {username : 'wang.qj'}, function(response, status, xhr) {
            alert("response" + response);
            alert("responseXML---->"+xhr.responseXML);
            alert("responseText---->"+xhr.responseText);
            alert("status---->"+xhr.status);
            alert("statusText---->"+xhr.statusText);
            $(this).html(response);
        }); 
        
         /* $("#content").load("login.html");  */
        
    })
</script>
</head>
<body>
    <div id="content"></div>
</body>
</html>

XMLHttpRequest對(duì)象

屬于JavaScript 范疇妖滔,可以調(diào)用一些屬性如下:
responseText 作為響應(yīng)主體被返回的文本
responseXML 如果響應(yīng)主體內(nèi)容類型是"text/xml"或"application/xml"隧哮,則返回包含響應(yīng)數(shù)據(jù)的XML DOM 文檔
status 響應(yīng)的HTTP 狀態(tài)
statusText HTTP 狀態(tài)的說(shuō)明

status

如果成功返回?cái)?shù)據(jù),那么xhr 對(duì)象的statusText 屬性則返回'OK'字符串座舍。除了'OK'的狀態(tài)字符串沮翔,statusText 屬性還提供了一系列其他的值,如下:
200 OK/success 服務(wù)器成功返回了頁(yè)面 (tomcat9.0返回success)
400 Bad Request 語(yǔ)法錯(cuò)誤導(dǎo)致服務(wù)器不識(shí)別
401 Unauthorized 請(qǐng)求需要用戶認(rèn)證
404 Not found 指定的URL 在服務(wù)器上找不到
500 Internal Server Error 服務(wù)器遇到意外錯(cuò)誤簸州,無(wú)法完成請(qǐng)求
503 ServiceUnavailable 由于服務(wù)器過(guò)載或維護(hù)導(dǎo)致無(wú)法完成請(qǐng)求

第3節(jié)課

JSON:
JSON對(duì)象:{"id":"20120301", "name":"張三", "age": 23}
json數(shù)組:[ "abc" , 123 , true, null ]

簡(jiǎn)化成get/post

實(shí)際使用時(shí)鉴竭,我們用load加載靜態(tài)頁(yè)歧譬,用get/post加載動(dòng)態(tài)頁(yè)

get(url, [data], [callback], [type])
url:待載入頁(yè)面的URL地址
data:待發(fā)送 Key/value 參數(shù)。
callback:載入成功時(shí)回調(diào)函數(shù)搏存。
type:返回內(nèi)容格式瑰步,xml, html, script, json, text, _default。

<script src="js/jquery-1.11.2.min.js"></script>
<script>
$(function(){
     $("#btn1").click(function(){
         $.get("showme.jsp", {realname: "John", time: "2pm" },
                  function(data){
                $("#content").html(data);
        });
     })
     $("#btn2").click(function(){
         $.post("showme.jsp", {realname: "John", time: "2pm" },
                  function(data){
                  $("#content").html(data);
        });
     })
})
</script>
</head>
<body>
<input type="button" id="btn1" value="測(cè)試get"/>
<input type="button" id="btn2" value="測(cè)試post"/>
<div id="content"></div>
</body>
</html>

.get().post()方法有四個(gè)參數(shù)

前面三個(gè)參數(shù)和.load()一樣璧眠,多了一個(gè)第四參數(shù)type
url(必須缩焦,請(qǐng)求html 文件的url 地址,參數(shù)類型為String)
data(可選责静,發(fā)送的key/value 數(shù)據(jù)袁滥,參數(shù)類型為Object)
callback(可選,成功或失敗的回調(diào)函數(shù)灾螃,參數(shù)類型為函數(shù)Function)题翻。
type(可選,即服務(wù)器返回的內(nèi)容格式:包括xml腰鬼、html嵌赠、script、json熄赡、jsonp 和text)

第四節(jié)課

type=xml

ajax.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>劉能</name>
  <contnet>我是小品演員</contnet>
</root>

相關(guān)js

 $("#btn1").click(function(){
     $.get("ajax.xml", function(data){
         $("#content").html($(data).find("root").find("name").text());
         $("#content").html($(data).find("root").find("contnet").text());
    },'xml');
 })

type=json

test.json

[{"name":"劉能","contnet":"我是小品演員"},{"name":"小沈陽(yáng)","contnet":"我是小品演員"}]

相關(guān)js

$("#btn2").click(function(){
         $.post("test.json", function(response){
              //alert(response.name);
                  $("#content").html(response[1].name);
        });
     })

表單序列化

<%@ 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 src="js/jquery-1.11.2.min.js"></script>
<script>
   $(function(){
       $("#btn1").click(function(){
           //alert($("#form1").serialize());
           $.ajax({
               type: "post",
               url: "<%=request.getContextPath()%>/regServlet",
               data: $("#form1").serialize(),
               success: function(msg){
             //alert( "Data Saved: " + msg );
             $("#result").html(msg);
               }
            });
           
       })
       
   })
</script>
</head>
<body>
<form id="form1">
用戶名:<input type="text" name="uname"/>
密碼:<input type="text" name="paw"/>
<input type="button" id="btn1" value="添加"/>
 </form>
<span id="result"></span>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姜挺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子彼硫,更是在濱河造成了極大的恐慌炊豪,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拧篮,死亡現(xiàn)場(chǎng)離奇詭異词渤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)串绩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)掖肋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人赏参,你說(shuō)我怎么就攤上這事⊙刂眩” “怎么了把篓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腰涧。 經(jīng)常有香客問(wèn)我韧掩,道長(zhǎng),這世上最難降的妖魔是什么窖铡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任疗锐,我火速辦了婚禮坊谁,結(jié)果婚禮上础废,老公的妹妹穿的比我還像新娘绘闷。我一直安慰自己瘤旨,他們只是感情好磅崭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布媒殉。 她就那樣靜靜地躺著洪橘,像睡著了一般盛嘿。 火紅的嫁衣襯著肌膚如雪娜饵。 梳的紋絲不亂的頭發(fā)上关划,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天小染,我揣著相機(jī)與錄音,去河邊找鬼贮折。 笑死裤翩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的调榄。 我是一名探鬼主播踊赠,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼振峻!你這毒婦竟也來(lái)了臼疫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扣孟,失蹤者是張志新(化名)和其女友劉穎烫堤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體凤价,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸽斟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了利诺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片富蓄。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖慢逾,靈堂內(nèi)的尸體忽然破棺而出立倍,到底是詐尸還是另有隱情,我是刑警寧澤侣滩,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布口注,位于F島的核電站,受9級(jí)特大地震影響君珠,放射性物質(zhì)發(fā)生泄漏寝志。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望材部。 院中可真熱鬧毫缆,春花似錦、人聲如沸乐导。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)兽叮。三九已至芬骄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹦聪,已是汗流浹背账阻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泽本,地道東北人淘太。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像规丽,于是被迫代替她去往敵國(guó)和親蒲牧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容