本人學習的是php,所以就用php跟js來演示代碼了,主要是鍛煉自己寫js的能力,練練手而已。
下面這是我編寫的操作ajax的代碼功能,勉強讓我稱之為庫吧。。
js代碼實例(tool.ajax.js):
1 /** 2 * JS庫 使用ajax 3 * @author jlb 4 */ 5 if(typeof tool == 'undefined') { 6 var tool = function(){}; 7 } 8 tool.ajax = function(){}; 9 10 11 /** 12 * 獲取ajax對象 13 * @return 成功返回ajax對象 14 */ 15 tool.ajax.getAjaxObject = function () { 16 try{return new XMLHttpRequest()}catch(e){} 17 try{return new ActiveXOject('Microsoft.XMLHTTP')}catch(e){} 18 alert('您的浏覽器版本過低!請升級您的浏覽器'); 19 } 20 21 22 /** 23 * ajax提交數據 24 * @param 參數列表 25 * @return void 26 */ 27 tool.ajax.formSubmit = function (options) { 28 var allow_param, //允許的參數列表 29 HTTP, //ajax對象 30 url, //請求的地址 31 data; //攜帶的數據 32 33 allow_param = ['method', 'url', 'data', 'success', 'type']; 34 //設置默認值 35 if(!options['type']) { 36 options['type'] == 'text'; 37 } 38 39 //處理url與數據, 將數據與URL合並 40 var disposeParam = function (list) { 41 var data = {url:list['url'],data:''}; 42 if(list['method'] == 'get') { 43 data['data'] += '?'; 44 for (var i in list['data']) { 45 data['data'] += i + '=' + list['data'][i] + '&'; 46 } 47 } 48 if(list['method'] == 'post') { 49 for (var i in list['data']) { 50 data['data'] += i + '=' + list['data'][i] + '&'; 51 } 52 } 53 return data 54 } 55 data = disposeParam(options); 56 HTTP = tool.ajax.getAjaxObject(); 57 //ajax回調函數 58 HTTP.onreadystatechange = function () { 59 if(HTTP.readyState == 4 && HTTP.status == 200) { 60 if(options['type'] == 'text') { 61 options['success'](HTTP.responseText); 62 } 63 else if(options['type'] == 'json') { 64 options['success'](eval('(' + HTTP.responseText + ')')); 65 } 66 } 67 } 68 69 if(options['method'] == 'get') { 70 url = data['url'] + data['data']; 71 HTTP.open(options['method'],url); 72 //設置請求頭解決get提交有緩存問題,通過修改文件最後修改時間解決 73 HTTP.setRequestHeader('If-Modified-Since', 0); 74 HTTP.send(null); 75 return; 76 } 77 78 if(options['method'] == 'post') { 79 HTTP.open(options['method'], data['url']); 80 //設置請求頭 81 HTTP.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 82 HTTP.send(data['data'].replace(/(&*$)/g,'')); 83 return; 84 } 85 }
使用實例(ajax_test.html):
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 5 <title>簡單ajax功能庫用法示例</title> 6 </head> 7 <body> 8 <!--引入編寫好的tool.ajax.js文件--> 9 <script src="tool.ajax.js"></script> 10 <script> 11 //ajax_test.html 12 13 //仿jquery方式ajax請求 14 var options = { 15 url : "ajax_test.php", //請求的腳本地址 16 method : "get", //是get還是post,注意必須是小寫哦..懶得轉了... 17 data : {name:"莫問出處丶",age: 20}, // 要攜帶的數據,只支持json格式 18 success : function (msg) { //請求完畢後回調函數.. 19 alert(msg); 20 }, 21 type : 'text', //不寫默認就是text,也就是說回調函數攜帶的數據是字符串.另外就是json 22 }; 23 24 tool.ajax.formSubmit(options); 25 </script> 26 </body> 27 </html>
ajax請求的腳本代碼(ajax_test.php):
1 <?php 2 //ajax_test.php 3 echo "名字:{$_GET['name']} 年齡: {$_GET['age']}";
在浏覽器打開ajax_test.html這文件,浏覽器顯示:
名字:莫問出處丶 年齡: 20
如果返回的數據是json格式將option 中的 type 屬性的值改為 json即可
有什麼問題就評論留言我吧,第一次寫博客,有點小激動.本菜鳥邁出第一步了.