基於JQuery架構的AJAX
前幾天發了個貼,分享了prototype架構關於AJAX方面的學習過程。然後有人說jquery架構更方便。
正好項目中準備使用thickbox,於是乾脆拋棄prototype.js,看起jquery.js了。JQuery確實不錯,體積比 Prototype小了許多,而且使用起來更方便更靈活。有人說Prototype像JAVA,正統;而JQuery像Ruby,靈活,更趨於OOP。
小試了下AJAX,感覺比prototype簡潔多了,在JQuery中,AJAX有三種實現方式:$.ajax(),$.post,$.get()。
XHTML(主要):
<div id="result" style="background:orange;border:1px solid red;width:300px;height:400px;"></div>
<form id="formtest" action="" method="post">
<p><span>輸入姓名:</span><input type="text" name="username" id="input1" /></p>
<p><span>輸入年齡:</span><input type="text" name="age" id="input2" /></p>
<p><span>輸入性別:</span><input type="text" name="sex" id="input3" /></p>
<p><span>輸入工作:</span><input type="text" name="job" id="input4" /></p>
</form>
<button id="send_ajax">提交</button>
<button id="test_post">POST提交</button>
<button id="test_get">GET提交</button>
JS:
1、引入jquery架構:
<scrīpt type="text/javascrīpt" src="../js/jquery.js"></scrīpt>
2、構建AJAX,JQUERY的好處是不需要在XHTML中使用JS代碼來觸發事件了,可以直接封裝在JS檔案中:
<scrīpt type="text/javascrīpt">
//$.ajax()方式
$(document).ready(function (){
$('#send_ajax').click(function (){ //直接把onclick事件寫在了JS中,而不需要混在XHTML中了
var params=$('input').serialize(); //序列化表單的值,與prototype中的form.serialize()相同
$.ajax({
url :'ajax_test.php', //幕後處理程式
type:'post', //資料發送方式
dataType:'json', //接受資料格式
data:params, //要傳遞的資料
success:update_page //回傳函數(這裡是函數名)
});
});
});
function update_page (json) { //回傳函數實體,參數為XMLhttpRequest.responseText
var str="姓名:"+json.username+"<br />";
str+="年齡:"+json.age+"<br />";
str+="性別:"+json.sex+"<br />";
str+="工作:"+json.job;
$("#result").html(str);
}
//$.post()方式:
$(function (){ //$(document).ready(function (){ 的簡寫
$('#test_post').click(function (){
$.post('ajax_test.php',
{username:$('#input1').val(),age:$('#input2').val(),sex:$('#input3').val(),job:$('#input4').val()},
function (data){ //回傳函數
var myjson='';
eval('myjson='+data+';');
$('#result').html("姓名:"+myjson.username+"<br />工作:"+myjson['job']);
});
});
});
//$.get()方式:
$(function (){
$('#test_get').click(function (){
$.get('ajax_test.php',
{username:$("#input1").val(),age:$("#input2").val(),sex:$("#input3").val(),job:$("#input4").val()},
function (data) {
var myjson='';
eval("myjson="+data+";");
$("#result").html(myjson.job);
});
});
});
</scrīpt>