亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

在JavaScript的jQuery庫中操作AJAX的方法講解

2019-11-20 11:49:19
字體:
來源:轉載
供稿:網友

Java軟件開發中,后臺中我們可以通過各種框架,像SSH等進行對代碼的封裝,方便我們對Java代碼的編寫,例如,Struts,SpringMVC對從前臺到action的流程進行封裝控制,使我們只需要進行一些簡單配置就可以實現;而Spring進行了對各種對象的管理進行封裝,提供了AOP編程的方式,大大方便了我們;而Hibernate和IBatis則是對JDBC代碼進行封裝,不需要我們每次都寫那些重復而繁雜的JDBC代碼。
 
前臺呢,對于頁面一些效果,驗證等,我們都是通過JavaScript語言進行完成的,但是它也就像我們的Java代碼一樣,是最前臺語言最基礎的,而JQuery則是對js代碼進行封裝方便我們前臺代碼的編寫,而且它還有一個非常大的優勢就是解決了瀏覽器的兼容問題,這也是我們使用它非常重要的原因之一。
 
而現在為了滿足用戶的需求,Ajax(Asynchronous Javascript + XML)異步刷新起到了無可比擬的作用,以前寫Ajax操作,總是需要我們想JDBC代碼一樣進行幾個必備的步驟:
AJAX――核心XMLHttpRequest對象,而JQuery也對Ajax異步操作進行了封裝,這里看一下幾種常用的方式。 $.ajax,$.post, $.get, $.getJSON。

$.ajax,這個是JQuery對ajax封裝的最基礎步,通過使用這個函數可以完成異步通訊的所有功能。也就是說什么情況下我們都可以通過此方法進行異步刷新的操作。但是它的參數較多,有的時候可能會麻煩一些??匆幌鲁S玫膮担?nbsp;     

 var configObj = {    method  //數據的提交方式:get和post    url  //數據的提交路勁    async  //是否支持異步刷新,默認是true    data  //需要提交的數據    dataType  //服務器返回數據的類型,例如xml,String,Json等    success  //請求成功后的回調函數    error  //請求失敗后的回調函數  } $.ajax(configObj);//通過$.ajax函數進行調用。

 
           好,看一個實際的例子吧,看一個進行異步刪除的例子:

Java軟件開發中,后臺中我們可以通過各種框架,像SSH等進行對代碼的封裝,方便我們對Java代碼的編寫,例如,Struts,SpringMVC對從前臺到action的流程進行封裝控制,使我們只需要進行一些簡單配置就可以實現;而Spring進行了對各種對象的管理進行封裝,提供了AOP編程的方式,大大方便了我們;而Hibernate和IBatis則是對JDBC代碼進行封裝,不需要我們每次都寫那些重復而繁雜的JDBC代碼。
 
前臺呢,對于頁面一些效果,驗證等,我們都是通過JavaScript語言進行完成的,但是它也就像我們的Java代碼一樣,是最前臺語言最基礎的,而JQuery則是對js代碼進行封裝方便我們前臺代碼的編寫,而且它還有一個非常大的優勢就是解決了瀏覽器的兼容問題,這也是我們使用它非常重要的原因之一。
 
而現在為了滿足用戶的需求,Ajax(Asynchronous Javascript + XML)異步刷新起到了無可比擬的作用,以前寫Ajax操作,總是需要我們想JDBC代碼一樣進行幾個必備的步驟:
AJAX――核心XMLHttpRequest對象,而JQuery也對Ajax異步操作進行了封裝,這里看一下幾種常用的方式。 $.ajax,$.post, $.get, $.getJSON。
 
$.ajax,這個是JQuery對ajax封裝的最基礎步,通過使用這個函數可以完成異步通訊的所有功能。也就是說什么情況下我們都可以通過此方法進行異步刷新的操作。但是它的參數較多,有的時候可能會麻煩一些。看一下常用的參數:      

 var configObj = {    method  //數據的提交方式:get和post    url  //數據的提交路勁    async  //是否支持異步刷新,默認是true    data  //需要提交的數據    dataType  //服務器返回數據的類型,例如xml,String,Json等    success  //請求成功后的回調函數    error  //請求失敗后的回調函數  } $.ajax(configObj);//通過$.ajax函數進行調用。

 
好,看一個實際的例子吧,看一個進行異步刪除的例子:

<span style="font-size:18px;">     // 刪除         $.ajax({           type : "POST", //提交方式           url : "${pageContext.request.contextPath}/org/doDelete.action",//路徑           data : {             "org.id" : "${org.id}"           },//數據,這里使用的是Json格式進行傳輸           success : function(result) {//返回數據根據結果進行相應的處理             if ( result.success ) {               $("#tipMsg").text("刪除數據成功");               tree.deleteItem("${org.id}", true);             } else {               $("#tipMsg").text("刪除數據失敗");             }           }         }); </span> 

$.post,這個函數其實就是對$.ajax進行了更進一步的封裝,減少了參數,簡化了操作,但是運用的范圍更小了。$.post簡化了數據提交方式,只能采用POST方式提交。只能是異步訪問服務器,不能同步訪問,不能進行錯誤處理。在滿足這些情況下,我們可以使用這個函數來方便我們的編程,它的主要幾個參數,像method,async等進行了默認設置,我們不可以改變的。例子不再介紹。
url:發送請求地址。
data:待發送 Key/value 參數。
callback:發送成功時回調函數。
type:返回內容格式,xml, html, script, json, text,_default。
 
$.get,和$.post一樣,這個函數是對get方法的提交數據進行封裝,只能使用在get提交數據解決異步刷新的方式上,使用方式和上邊的也差不多。這里不再演示。
 
$.getJSON,這個是進一步的封裝,也就是對返回數據類型為Json進行操作。里邊就三個參數,需要我們設置,非常簡單:url,[data],[callback]。
 
其實會了$.ajax方法,其它的就都會使用了,都是一樣的,其實非常簡單。
 
但是這里還有一個問題,比較麻煩,就是如果頁面數據量比較大,該怎么辦呢?在常規表單的處理中,我們使用框架Struts2可以通過域驅動模式進行自動獲取封裝,那么通過ajax,如何進行封裝呢?這里JQuery有一個插件,Jquery Form,通過引入此js文件,我們可以模仿表單Form來支持Struts2的域驅動模式,進行自動數據的封裝。用法和$.ajax類似,看一下實際的例子,這里寫一個保存用戶的前臺代碼:
 

<span style="font-size:18px;"> $(function(){     var options = {       beforeSubmit : function() {//處理以前需要做的功能         $("tipMsg").text("數據正在保存,請稍候...");         $("#insertBtn").attr("disabled", true);       },       success : function(result) {//返回成功以后需要的回調函數         if ( result.success ) {           $("#tipMsg").text("機構保存成功");                                        //這里是對應的一棵樹,后邊會介紹到,           // 控制樹形組件,增加新的節點           var tree = window.parent.treeFrame.tree;           tree.insertNewChild("${org.id}", result.id, result.name);         } else {           $("#tipMsg").text("機構保存失敗");         }         // 啟用保存按鈕         $("#insertBtn").attr("disabled", false);       },       clearForm : true     };        $('#orgForm').ajaxForm(options); //通過Jquery.Form中的ajaxForm方法進行提交   }); </span> 


這樣我們就不用再進行數據data的封裝處理,大大簡化了我們ajax的操作這樣異步刷新的操作。綜上為JQuery中ajax的操作,感覺使用多了,和form表單的處理還是非常相似的,只不過實現的功能不一樣罷了。學習編程,其實就是學習對數據的流轉處理,如何從前臺獲取,傳輸到服務器進行相應的處理,然后返回,進行相關的顯示,把這個流程通過一些技術實現,就完成了軟件的開發,感覺還是非常有意思的。

利用 jQuery 簡化 Ajax 開發

Ajax 并不是一種語言,它只是幾種舊技術如 JavaScript 和 XML 以及 DOM 的綜合應用,全稱為 Asynchronous JavaScript and XML,即 異步 JavaScript 和 XML ,它能夠在頁面不刷新的前提下和服務器進行異步數據交互,如果運用得當,它能夠很好的提高用戶體驗,還能節省帶寬、降低服務器壓力。作為一個優秀的 JavaScript 框架,jQuery 同樣也提供了很多方法來處理 Ajax 的相關操作。
利用 Ajax 獲取異步數據

傳統 Ajax 一般步驟為:

  •     創建 XMLHttpRequest(需兼容各種瀏覽器)。
  •     向服務器發送 XMLHttpRequest 請求。
  •     監測 XMLHttpRequest 的 onreadystatechange 事件。
  •     判斷服務端是否響應完成及響應結果是否正常。
  •     獲取 Ajax 從服務端返回的結果。

例如用 Ajax 獲取服務器上的當前時間,示例代碼如下:

<html><head><title>Traditional Ajax</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript">function getDateTime() {  var xmlHttp; if (window.XMLHttpRequest) { // For IE7+, Firefox, Chrome, Opera, Safari xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { // For IE6, IE5 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {  document.getElementById("timediv").innerHTML = "現在時間" + xmlHttp.responseText; } } xmlHttp.open("GET", "ajax.php", true); xmlHttp.send(null);}</script></head><body> <div id="timediv">現在時間</div> <br /><input type="button" value="測試傳統的 Ajax" onClick="getDateTime()" /></body></html>

服務端代碼為:

<?php //服務器端為格林尼治標準時間,這里需設置為中國所在時區 date_default_timezone_set("PRC"); echo date("Y-m-d H:i:s");?>

可以看到,僅僅實現如此簡單的功能,代碼卻如此冗長,特別是創建 XMLHttpRequest 的時候,還要兼容多種瀏覽器,另外還要監測 XMLHttpRequest 的 onreadystatechange 時間,以及返回的 readyState 和 status 狀態,稍顯麻煩。

jQuery 的 Ajax 方法,如果將上面的代碼改寫為 jQuery 的 Ajax 方法,代碼如下:

<html><head><title>Traditional Ajax</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js?ver=1.4.4"></script><script type="text/javascript">function getDateTime() { $("#timediv").load("ajax.php");}</script></head><body> <div id="timediv"></div> <br /><input type="button" value="測試 jQuery 的 Ajax" onClick="getDateTime()" /></body></html>

可以看到,jQuery 的 Ajax 方法,主要代碼只有一行 $("#timediv").load("ajax.php");,相當之簡單,而且絕對兼容各種主流瀏覽器。從這個例子可以看出,jQuery 大大的簡化了 Ajax 的編碼方式。
GET 還是 POST ?

上面的例子中的 load 函數固然方便,但是我們還是經常要指定 jQuery 到底是用 GET 方法還是 POST 方法,使用方法如下:

  $.get(url, [data], [callback])  $.post(url, [data], [callback], [type])

GET 和 POST 的使用方法基本相同,參數 data 為向服務器發送的數據,callback 為回調函數,type 用來指定服務器返回的數據類型,如純文本、XML、JSON 等。

下面來看具體例子:

<html><head><title>jQuery Ajax (get and post)</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js?ver=1.4.4"></script><script type="text/javascript">$(document).ready(function() { // 為 GET 按鈕添加事件 $("#getbtn").click(function() { $.get("ajaxpage.php", {username:$("#username").val()}, function(data) {  $("#ajaxdata").html(data); // 將服務端返回的數據填充到 P 標簽中 }); });  // 為 POST 按鈕添加事件 $("#postbtn").click(function() { $.post("ajaxpage.php", {username:$("#username").val()}, function(data) {  $("#ajaxdata").html(data); // 將服務端返回的數據填充到 P 標簽中 }); });});</script></head><body> 你的大名:<input type="text" id="username" /><br /> <input type="button" id="getbtn" value="GET 方法" /><br /> <input type="button" id="postbtn" value="POST 方法" /> <p id="ajaxdata"></p></body></html>

服務端代碼為:

<?php // 服務器端為格林尼治標準時間,這里需設置為中國所在時區 date_default_timezone_set("PRC"); $username = ""; $ajaxMethod = "";  // 判斷是 GET 還是 POST if(isset($_GET["username"])) { $username = $_GET["username"]; $ajaxMethod = "GET"; } else { $username = $_POST["username"]; $ajaxMethod = "POST"; }

 echo "你好," . $username . ", 現在時間為:" . date("Y-m-d H:i:s"). ",此數據來源于 " . $ajaxMethod . " Ajax";
?>

可以看到,jQuery Ajax 的 GET 方法 和 POST 方法,使用起來依然相當之方便。
控制 Ajax

GET 和 POST 方法以及前面提到的 load 方法,使用起來雖然十分實用,但是某些時候卻過于簡單,很多時候我們都需要更多的控制 Ajax 的細節,jQuery 同樣提供了一些方法來控制 Ajax 的細節,主要通過 $.ajax(options) 方法來實現,請看下面的代碼片段:

<script type="text/javascript">$(document).ready(function() { // 為 GET 按鈕添加事件 $("#getbtn").click(function() { $.ajax({  type: "GET",  url: "ajaxpage.php",  data: {username:$("#username").val()},  timeout: 3000,  error: function() {  alert("error!");  },  success: function(data) {  // 回調函數,將返回的數據添加到 P 標簽中  $("#ajaxdata").html(data);  } }); });  // 為 POST 按鈕添加事件 $("#postbtn").click(function() { $.ajax({  type: "POST", // Ajax 提交方式  url: "ajaxpage.php", // 提交頁  data: {username:$("#username").val()}, // 要提交的數據  timeout: 3000, // 超時設置,單位為毫秒  error: function() { // Ajax 發生錯誤時  alert("error!");  },  success: function(data) {  // 回調函數,將返回的數據添加到 P 標簽中  $("#ajaxdata").html(data);  } }); });});</script>

上面例子中,$.ajax(options) 中的 options 條目是可選的,并不是每個參數都要設置。對于有些參數而言,例如 timeout 和 error 在某個項目中是固定不變的,那么就沒必要在每個 Ajax 代碼中都寫,可以用 jQuery 提供的全局 Ajax 設置的方法來設置一下,設置方法如下:

<script type="text/javascript">$(document).ready(function() { // 全局 Ajax 設定,這里的設置將對本頁面所有 Ajax 方法適用 $.ajaxSetup({ url: "ajaxpage.php", // Ajax 提交頁 timeout: 3000, // 超時設置,單位為毫秒 error: function() { // Ajax 發生錯誤時  alert("error!"); } });  // 為 GET 按鈕添加事件 $("#getbtn").click(function() { $.ajax({  type: "GET",  data: {username:$("#username").val()},  success: function(data) {  // 回調函數,將返回的數據添加到 P 標簽中  $("#ajaxdata").html(data);  } }); });  // 為 POST 按鈕添加事件 $("#postbtn").click(function() { $.ajax({  type: "POST", // Ajax 提交方式  data: {username:$("#username").val()}, // 要提交的數據  success: function(data) {  // 回調函數,將返回的數據添加到 P 標簽中  $("#ajaxdata").html(data);  } }); });});</script>

上面例子中,在全局設定里面設置好了的參數,在整個頁面中都會生效,這個功能可以大大的減少重復的代碼。

以上這些就是 jQuery Ajax 的幾種簡單使用方式,而且上面的幾個例子中服務器返回的數據都是純文本,如果是在復雜的 Ajax 應用中,可能就需要用到 XML 或者 JSON 了。
      

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕免费| 久久久国产精彩视频美女艺术照福利| 浅井舞香一区二区| 日韩av综合中文字幕| 欧美成人剧情片在线观看| 国产精品久久久久高潮| 中文字幕欧美视频在线| 亚洲大尺度美女在线| 国产在线观看一区二区三区| 91精品国产高清自在线看超| 久久人人看视频| 日韩一区在线视频| 亚洲成人激情图| 亚洲精品久久久久中文字幕欢迎你| 欧美日韩人人澡狠狠躁视频| 国产欧美一区二区三区在线看| 亚洲欧美国产精品久久久久久久| 亚洲国产精品系列| 亚洲色图17p| 亚洲午夜色婷婷在线| 成人综合网网址| 亚洲第一免费播放区| 亚洲电影中文字幕| 国产精品视频久| 欧美韩国理论所午夜片917电影| 欧美性资源免费| 久久久女人电视剧免费播放下载| 国产精品美乳在线观看| 国产精品一区二区三区久久久| 97视频在线观看网址| 2019日本中文字幕| 欧美老少做受xxxx高潮| 夜色77av精品影院| 黑人巨大精品欧美一区二区免费| 97精品在线观看| 激情亚洲一区二区三区四区| 日韩在线视频免费观看高清中文| 粗暴蹂躏中文一区二区三区| 日韩视频在线一区| 国产日韩精品在线播放| 一区二区福利视频| 日韩精品在线免费观看视频| 日韩av电影在线网| 欧美成人免费全部观看天天性色| 欧美性猛交xxxx黑人猛交| 91精品国产91久久久| 国产成人涩涩涩视频在线观看| 久久欧美在线电影| 亚洲精品v天堂中文字幕| 国产一区二区在线免费| 亚洲男女性事视频| 国产精品一区二区3区| 一区二区三区美女xx视频| 中文字幕亚洲在线| 亚洲高清福利视频| 5278欧美一区二区三区| 欧美成人免费在线观看| 亚洲www永久成人夜色| 欧美日韩国产成人在线观看| 欧美一级电影久久| 91九色国产视频| 亚洲黄色在线观看| 日韩精品久久久久久久玫瑰园| 国产99久久精品一区二区 夜夜躁日日躁| 欧美视频免费在线观看| 91色视频在线导航| 精品国产乱码久久久久酒店| 美女av一区二区三区| 日韩精品一区二区视频| 91黑丝高跟在线| 国产一区欧美二区三区| 欧美精品在线视频观看| 伊人久久久久久久久久久久久| 伊人久久免费视频| 91中文精品字幕在线视频| 久久综合免费视频| 日韩av在线网| 国产精品扒开腿做爽爽爽的视频| 日本高清不卡在线| 亚洲毛片在线观看.| 国产精品香蕉在线观看| 成人欧美一区二区三区在线| 懂色av影视一区二区三区| 午夜精品国产精品大乳美女| 国产精品久久久久av免费| 亚洲小视频在线| 亚洲美女中文字幕| 国产精品黄色av| 国产欧美在线看| 中文字幕九色91在线| 精品国产欧美成人夜夜嗨| 日韩视频在线观看免费| 中文一区二区视频| 国产日韩在线一区| 国产精品久久二区| 国产精品久久久久久久久久ktv| 欧美激情网站在线观看| 日韩电影免费在线观看中文字幕| 91po在线观看91精品国产性色| 日本sm极度另类视频| 中文字幕国产亚洲2019| 亚洲2020天天堂在线观看| 国产成人精品一区| 日韩av成人在线| 伦理中文字幕亚洲| 97香蕉超级碰碰久久免费的优势| 91久久精品国产| 18性欧美xxxⅹ性满足| 亚洲人成绝费网站色www| 另类专区欧美制服同性| 国产精品极品在线| 中文字幕亚洲自拍| 欧美日韩国产一区二区三区| 欧美在线观看日本一区| 尤物yw午夜国产精品视频| 亚洲第一偷拍网| 欧美日韩精品在线观看| 91国产在线精品| 亚洲一区二区三区视频播放| 欧美午夜性色大片在线观看| 欧美日韩裸体免费视频| 美女精品视频一区| 国产精品9999| 国产精品无码专区在线观看| 久99久在线视频| 91在线视频导航| 欧美精品国产精品日韩精品| 亚洲国产中文字幕在线观看| 在线电影欧美日韩一区二区私密| 国产日韩av在线播放| 亚洲国产精品字幕| 91精品国产99久久久久久| 日韩在线精品一区| 亚洲美女在线看| 91久久在线视频| 亚洲福利视频二区| 日韩精品中文字幕在线播放| 久99久在线视频| 久99久在线视频| 亚洲美女av在线播放| 中文字幕亚洲专区| 亚洲在线免费观看| 日韩国产欧美精品在线| 久久影视电视剧免费网站清宫辞电视| 亚洲国产精品久久| 91精品国产色综合久久不卡98| 成人免费直播live| 国产精品久久97| 成人有码视频在线播放| 国产91在线高潮白浆在线观看| 欧美成人精品一区二区| 亚洲精品成人网| 久久视频精品在线| 国产精品91久久久久久| 欧美高清视频在线| 浅井舞香一区二区| 欧美另类极品videosbest最新版本| 日韩高清欧美高清| 日韩精品视频在线免费观看| 国产精品色悠悠| 日韩视频精品在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美性猛交99久久久久99按摩| 国语自产精品视频在线看一大j8|