成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個比較方便通用的自定義Ajax函數

開發 前端
這里介紹的一個自定義Ajax函數,是作者自己摸索出來的。在JQuery調用中可能會出現undefinde的錯誤,希望大家能熱烈討論下。

function Ajax()  
{  
    var len=arguments.length;  
    var type,url,postdata,fn;  
    if(len<2)  
    {  
   alert('沒有2個一下參數的重載,至少必須指定請求類型(type)和url地址!');  
   return;  
    }  
    type=arguments[0];  
    url=arguments[1];  
    if(len>2)  
    {  
   var args=arguments[2];  
   if(typeof(args)=="string")  
   {  
  postdata=args;  
   }  
    }  
    var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();  
    xhr.open(type,url,true);  
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
    fn = arguments[len-1];  
    xhr.onreadystatechange = function (){  
   if(xhr.readyState==4)  
   {  
 if(xhr.status==200)  
 {  
 if(typeof(fn)=="function")  
fn(xhr.responseText);  
 }  
 else 
 {  
   alert("你所請求的頁面有異常");  
 }  
   }  
    };  
    xhr.send(postdata);  
 }  
 
 function Test()  
 {  
    Ajax("get","/WebRoot/servlet/TestAjax");  
    Ajax("get","/WebRoot/servlet/TestAjax",function (date){  
   alert("Get Date:\n"+date);  
    });  
    Ajax("post","/WebRoot/servlet/TestAjax");  
    Ajax("post","/WebRoot/servlet/TestAjax",function (date){  
   alert("Post Date:\n"+date);  
    });  
    Ajax("post","/WebRoot/servlet/TestAjax","username=jonllen&pwd=123456",function (date){  
   alert("Post Date:\n"+date);  
    });  
 } 

function Ajax()
{
    var len=arguments.length;
    var type,url,postdata,fn;
    if(len<2)
    {
   alert('沒有2個一下參數的重載,至少必須指定請求類型(type)和url地址!');
   return;
    }
    type=arguments[0];
    url=arguments[1];
    if(len>2)
    {
   var args=arguments[2];
   if(typeof(args)=="string")
   {
  postdata=args;
   }
    }
    var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
    xhr.open(type,url,true);
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    fn = arguments[len-1];
    xhr.onreadystatechange = function (){
   if(xhr.readyState==4)
   {
 if(xhr.status==200)
 {
 if(typeof(fn)=="function")
fn(xhr.responseText);
 }
 else
 {
   alert("你所請求的頁面有異常");
 }
   }
    };
    xhr.send(postdata);
 }

 function Test()
 {
    Ajax("get","/WebRoot/servlet/TestAjax");
    Ajax("get","/WebRoot/servlet/TestAjax",function (date){
   alert("Get Date:\n"+date);
    });
    Ajax("post","/WebRoot/servlet/TestAjax");
    Ajax("post","/WebRoot/servlet/TestAjax",function (date){
   alert("Post Date:\n"+date);
    });
    Ajax("post","/WebRoot/servlet/TestAjax","username=jonllen&pwd=123456",function (date){
   alert("Post Date:\n"+date);
    });
 }

就只有一個函數Ajax,調用的例子是Test(),由于JavaScript的函數申明不需要固定參數,能實現動態獲取傳遞,利用這點我們能實現類似與C#或Java里面的重載,并且我們能根據傳入參數的類型和數量進行特別的判斷,而執行不同的操作。上述Ajax函數里就用到判斷當***一個傳入的參數是函數類型的時候我們就認為是這個是Ajax回調函數,如果是字符串類型的話就認為是postData,這樣我們就能實現動態傳遞可選參數,也就是說你可以加上function(data){alert(date);}就會自動在Ajax加載返回的回調該函數,如果沒有就不調用。

在JQuery里面,我們大多會用到對象的prototype屬性,并也可實現可選參數默認構造函數來實例對象,形如:

var Ajax = {    
    url : location.href,  
    type : "post",  
    send : function ()  
    {  
   alert (this.type);  
    }  
};  
Ajax.send();  
alert( Ajax.url ); 

var Ajax = {
 url : location.href,
 type : "post",
 send : function ()
 {
  alert (this.type);
 }
};
Ajax.send();
alert( Ajax.url );    于是,JQuery便能這樣調用Ajax:

Java代碼

$.ajax({   
  type: "GET",  
  url: "test.js",  
  dataType: "script" 
});  

$.ajax({
  type: "GET",
  url: "test.js",
  dataType: "script"
});

不過我對整個JQuery框架的源碼還有一些疑問,當我想自己來實現像JQuery這樣來調用的Ajax請求函數的時候遇到了一些問題,我想在對象構造函數里面再加上一層構造函數缺省值,卻獲得不了構造函數參數的值,調用不報什么錯誤,就是獲取到的值都是undefinde,可能是我還未了解JavaScrit里面一些更深奧的東西吧。。。^_^

上面我寫的Ajax函數也能動態判斷指定參數的功能,實現很簡單就是根據傳入的arguments數量和類型來判斷的,所以我們在調用的時候能像在Test里面有多種參數調用的方式,方便實用。當我們不需要用到整個JQuery框架或只要用Ajax的時候就嵌入這一段函數就有了,更重要的是自己寫的不會造成跟其他的產生沖突。

以上我寫的Ajax的函數在IE6、FF2.0、Chrome內測試都正常,請求的服務器端是Servlet,都能正常的返回結果。注意:當post過去有中文的時候postData數據***先單個針對中文進行encodeURI(postData)URL編碼,Ajax請求post的時候都是以UTF-8編碼格式發送的,確保服務器端和客戶端編碼一致,這樣就不會出現中文亂碼問題。

【編輯推薦】

  1. 使用Java開發Google APP Engine初試
  2. 橫向技術分析C#、C++和Java優劣
  3. Java開發者需要注意的十條法則
責任編輯:彭凡 來源: javaeye
相關推薦

2021-01-06 05:25:56

項目Springboot應用

2012-11-19 11:07:42

IBMdw

2022-06-06 09:28:36

ReactHook

2020-09-18 10:12:24

KotlinTCP網絡協議

2021-03-09 15:23:45

鴻蒙HarmonyOS應用開發

2010-10-25 16:05:07

oracle自定義函數

2010-09-14 16:47:23

SQL自定義函數

2009-09-03 10:08:27

JavaScript自

2009-02-10 12:55:39

自定義控件AJAX.NET

2010-05-11 13:16:21

Unix awk

2021-06-16 17:46:55

函數指針結構

2017-06-20 12:48:55

React Nativ自定義模塊Note.js

2010-09-14 16:59:39

SQL自定義函數

2023-10-31 09:10:39

2024-08-01 17:20:55

2015-03-26 11:51:22

2018-03-16 08:41:16

Oracle存儲函數

2011-05-17 13:32:04

oracle

2015-02-12 15:33:43

微信SDK

2010-09-06 15:41:34

SQL函數存儲過程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区激情三区 | 免费观看黄色一级片 | 夜夜爽99久久国产综合精品女不卡 | 日韩一区二区av | 亚洲成人av| 日本一二三区电影 | 欧美三级不卡 | 第一av | 亚洲综合一区二区三区 | 中文字幕国产一区 | 精品一区二区三区中文字幕 | 亚洲国产精品成人久久久 | 精品免费 | www.黄色在线观看 | 亚洲一区久久久 | 福利视频网站 | 日韩欧美国产电影 | 91国产精品在线 | 国产日韩欧美二区 | 国产精品美女一区二区三区 | 午夜精品一区二区三区免费视频 | 中文字幕视频在线 | 操久久| 天天综合永久入口 | 欧美色999 | 麻豆视频国产在线观看 | 亚洲狠狠丁香婷婷综合久久久 | 超碰免费在线 | 日韩插插 | 国产日韩久久 | 国产高清一区二区三区 | 男女av| 久久久www | 欧美一级高清片 | 中文字幕精品一区 | 精品国产不卡一区二区三区 | 中文字幕电影在线观看 | 少妇淫片aaaaa毛片叫床爽 | 久久国产一区二区三区 | 香蕉国产在线视频 | 亚洲国产成人在线观看 |