在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異步操作進行了封裝,這裡看一下幾種常用的方式。 $.post, $.ajax, $.get, $.getJSON。
一,$.post,這個函數其實就是對$.ajax進行了更進一步的封裝,減少了參數,簡化了操作,但是運用的範圍更小了。 $.post簡化了資料提交方式,只能以POST方式提交。只能是異步訪問伺服器,不能同步訪問,不能進行錯誤處理。在滿足這些情況下,我們可以使用這個函數來方便我們的編程,它的主要幾個參數,像method,async等進行了默認設置,我們不可以改變的。例子不再介紹。
url:發送請求位址。
data:待傳送 Key/value 參數。
callback:發送成功時回呼函數。
type:傳回內容格式,xml, html, script, json, text,_default。
#二, $.ajax,這個是JQuery對ajax封裝的最基礎步,透過使用這個函數可以完成非同步通訊的所有功能。也就是說什麼情況下我們都可以透過此方法進行非同步刷新的操作。但是它的參數較多,有的時候可能會很麻煩。來看看常用的參數:
var configObj = {
# url //數據的提交路勁
async //是否支持異步刷新,默認是true
data //需要提交的數據
dataType //服務器返回數據的類型,例如xml,String,Json等
success //請求成功後的回調函數
error //請求失敗後的回調函數
}
$.ajax(configObj);//透過$.ajax函數呼叫。
好,看一個實際的例子吧,看一個進行非同步刪除的例子:
[javascript]
"font-size:18px;"> // 刪除 $.ajax({ -
type : "POST" , //提交方式 #
-
url : "${pageContext.request.contextPath]/org/#1. ## data : { ##1 "org.id"- :
## "${org.id}"
-
## success : function (result)-
if # $(
-
又都》 "#tipMsg" ).text(- "刪除資料成功"
);
${org.id}"- ,
true);
地##
} 1#1 }
# });
三,$.get,和$.post一樣,這個函數是對get方法的提交資料進行封裝,只能使用在get提交資料解決非同步刷新的方式上,使用方式和上邊的也差不多。這裡不再示範。 四, $.getJSON,這個是進一步的封裝,也就是對回傳資料型別為Json操作。裡邊有三個參數,需要我們設置,非常簡單:url,[data],[callback]。
-
其實會了$.ajax方法,其它的就都會使用了,都是一樣的,其實非常簡單。 但是這裡有一個問題,比較麻煩,就是如果頁面資料量比較大,該怎麼辦呢?在常規表單的處理中,我們使用框架Struts2可以透過網域驅動模式進行自動取得封裝,那麼透過ajax,如何進行封裝呢?這裡JQuery有一個插件,Jquery Form,透過引入此js文件,我們可以模仿表單Form來支援Struts2的網域驅動模式,進行自動資料的封裝。用法和$.ajax類似,請看實際的例子,這裡寫一個保存使用者的前台程式碼: #
- #[javascript]
##[javascript]-
#"font-size:18px;" > $(###function###(){ ####### ############ ###var### options = { ###################S ) {###//處理以前需要做的功能### ######
$("tipMsg").text("資料正在儲存,請稍候..."); ;
$("#insertBtn").attr("disabled", true
#a'
-
# }, { //返回成功以後需要的回呼函數
-
$("#tipMsg" ).
# 為#
-
#// # var tree = window.parent.treeFrame.tree; #####"
-
tree.insertNewChild("${org.id}" #result.id, ## } else- {
## tipMsg").text ("機構保存失敗");
# # # } # - // 啟用儲存按鈕
" disabled", );
-
}, clearForm : true
##
-
$('#orgForm').ajaxForm(options); //透過Jquery.Form中的ajaxForm方法進行提交
});
這樣我們就不用再進行資料data的封裝處理,大幅簡化了我們ajax的操作這樣異步刷新的操作。綜上為JQuery中ajax的操作,感覺使用多了,和form表單的處理還是非常相似的,只不過實現的功能不一樣罷了。學習編程,其實就是學習對資料的流轉處理,如何從前台獲取,傳輸到伺服器進行相應的處理,然後返回,進行相關的顯示,把這個流程通過一些技術實現,就完成了軟體的開發,感覺還是非常有趣的。
|