Ajax基礎使用與jquery下使用ajax教程
ajax是目前專案上使用
比較頻繁的技術,非常的實用。本人目前做的專案中幾乎都使用了ajax去後臺請求資料。現在講本人的學習筆記以及練習使用心得分享給大家,純手打,大家多多支援。本分享為基礎的ajax使用方法,掌握了基礎使用,在根據實際業務來適當的調整引數的設定,請求成功方法的編寫。就完成了ajax這個強大的使用。
一:html中ajax的使用
通過一個小domo幫助大家理解ajax的使用:首頁登入動態重新整理驗證賬號是否存在,這裡不從資料庫抽取資料了,直接將已存在的賬號寫死來驗證。
通過AJAX (Asynchronous J AvaScript and XML)實現非同步重新整理。
1. 首先寫我們的登入頁面:
<body>
賬號:<input type="text" onkeyup="check()" id="account"></input>
<span id="checkResult"></span>
</body>
<script type="text/javascript" src="../js/ajax.js"></script>
解析:onkeyup屬性是:鍵盤按下彈起之後的響應,回去執行引用的js檔案中check()方法。
span是用來顯示是否存在的文字提示。
截圖如下:
2. 此時當輸入賬號時,會響應ajax.js中的check方法。
var xmlhttp; function check() { var name = document.getElementById("account").value; var url = "http://localhost:8080/test1/html/checkName.jsp?name="+name; xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = checkResult; xmlhttp.open("GET",url,true); xmlhttp.send(null); } function checkResult() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) document.getElementById("checkResult").innerHTML=xmlhttp.responseText; }
分部解析:
①整體過程為瀏覽器建立XMLHTTPRequest物件,並設定好響應函式,設定好伺服器訪問的頁面地址,執行訪問。
伺服器端呼叫響應函式,判斷是否響應成功 ,獲取文字,顯示文字。
②建立xmlhttp為物件 XMLHTTPRequest,通過這個物件與伺服器端實現動態互動效果;
③當ajax請求傳到伺服器,並完成響應之後,瀏覽器端需要接收這個響應,通過onreadystatechange完成伺服器端的接收。並將這個接收操作通過checkResult方法來完成 。也就是說,伺服器端處理了這個ajax請求,並訪問了url地址,拿到了結果。此時返回到瀏覽器,通過onreadystatechange呼叫checkResult方法,判斷伺服器端狀態為(請求已完成,響應已就緒)並且200(響應成功),此時將span文字框中插入伺服器返回來的結果資訊。
④.open函式設定將要訪問的地址。
⑤.send函式為傳送給伺服器。null表示沒有引數,只有用POST請求時,才可能用到引數。
⑥checkResult處理伺服器的響應結果。
3. 最後為檢驗頁面的程式碼,使用JSP。程式碼如下:
<body>
<%
String name = request.getParameter("name");
if("吳先生".equals(name))
out.print("<font color='red'>已經存在</font>");
else
out.print("可以使用");
%>
</body>
完成了動態重新整理驗證。
二:通過jquery完成ajax請求重新整理驗證:
首先匯入jquery.main.js檔案。
1. 在jquery中通過$.ajax({param1.param2,param3})實現ajax請求。
前端頁面同樣,有輸入框和提示框組成。
2. 在js中程式碼如下:
$(function(){
$("#in1").keyup(function() {
var page = "../html/checkName.jsp";
var value = $(this).val();
$.ajax({
url:page,
data:{"name":value},
success:function(result) {
$("#check").html(result);
}
});
});
});
分佈解析:
$(function() {})為預載入函式,學習過jquery的同志們應該都懂。
page為我們需要請求的頁面,此URL可以為前端頁面不變,也可根據實際專案需求設定為後端請求地址。
data為我們需要傳遞的引數以及引數的值。
success為請求成功後,對應的響應函式,也就相當於onreadystatechange對應的checkResult方法的作用。
成功實現如下
3. 在jquery中提交ajax的方式還有很多種,常見的有$.get(專門提交get請求)、$.post(專門提交post請求)、load(最簡易的ajax請求),均可實現ajax請求。程式碼如下:
$(function(){
$("#in1").keyup(function() {
var value = $(this).val();
var page = "../html/checkName.jsp?name="+value;
/* $.ajax({
url:page,
data:{"name":value},
success:function(result) {
$("#check").html(result);
}
});*/ //$.ajax方式提交
/* $.get(
page,
{"name":value},
function(result) {
$("#check").html(result);
}
)*/ //$.get方式提交
$("#check").load(page);
//load方式提交,需要注意的是:$("#check")為顯示提示資訊的文字框,此時直接將輸入框中的值通過page的URL中傳遞引數到請求頁面中。load的引數可以有兩個$("#**").load(page,[date]);
});
});
4. 有時候我們需要提交驗證多個輸入框的內容,此時可以使用serialize()把輸入的資料格式化成字串,然後傳遞到URL中。
程式碼如下:
<a href="http://localhost:8080/test1/html/checkName.jsp">http://localhost:8080/test1/html/checkName.jsp</a>
<form id="form">
姓名:<input type="text" id="name" name="name"><br/>
年齡<input type="text" id="age" name="age"><br/>
性別<input type="text" id="sex" name="sex">
</form>
$("input").keyup(function() {
var data = $("#form").serialize();
var url = "http://localhost:8080/test1/html/checkName.jsp";
var link = url+"?"+data;
$("a").html(link);
$("a").attr("href",link);
});
解析:$("input")是選擇input的所有。
$("#form").serialize()可以獲取到form表單中,所有的name屬性,並將這些name拼接在一起,拼接方式為:name1&name2&name3。然後將link的值設為url+"?"+data,這樣就完成了三個引數的賦值給url。
通過attr("href",link),就可以改變a連結的屬性href的值。
完成了動態將輸入的值傳遞到引數的實現。
特別注意:input中name屬性不可少,不然serialize無法識別。
截圖如下:
技術有限,目前對ajax的理解就到這裡了,歡迎大家批評指導。謝謝。