程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 編寫自己的javascript功能庫之Ajax(仿jquery方式),ajaxjquery

編寫自己的javascript功能庫之Ajax(仿jquery方式),ajaxjquery

編輯:關於PHP編程

編寫自己的javascript功能庫之Ajax(仿jquery方式),ajaxjquery


本人學習的是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即可

 有什麼問題就評論留言我吧,第一次寫博客,有點小激動.本菜鳥邁出第一步了.

  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved