[ Index ] |
|
Code source de DokuWiki 2006-11-06 |
1 /* Simple AJAX Code-Kit (SACK) */ 2 /* ©2005 Gregory Wild-Smith */ 3 /* www.twilightuniverse.com */ 4 /* Software licenced under a modified X11 licence, see documentation or authors website for more details */ 5 6 function sack(file){ 7 this.AjaxFailedAlert = "Your browser does not support the enhanced functionality of this website, and therefore you will have an experience that differs from the intended one.\n"; 8 this.requestFile = file; 9 this.method = "POST"; 10 this.URLString = ""; 11 this.encodeURIString = true; 12 this.execute = false; 13 14 this.onLoading = function() { }; 15 this.onLoaded = function() { }; 16 this.onInteractive = function() { }; 17 this.onCompletion = function() { }; 18 this.afterCompletion = function() { }; 19 20 this.createAJAX = function() { 21 try { 22 this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 23 } catch (e) { 24 try { 25 this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 26 } catch (err) { 27 this.xmlhttp = null; 28 } 29 } 30 if(!this.xmlhttp && typeof XMLHttpRequest != "undefined"){ 31 this.xmlhttp = new XMLHttpRequest(); 32 } 33 if (!this.xmlhttp){ 34 this.failed = true; 35 } 36 }; 37 38 this.setVar = function(name, value){ 39 if (this.URLString.length < 3){ 40 this.URLString = name + "=" + value; 41 } else { 42 this.URLString += "&" + name + "=" + value; 43 } 44 }; 45 46 this.encVar = function(name, value){ 47 var varString = encodeURIComponent(name) + "=" + encodeURIComponent(value); 48 return varString; 49 }; 50 51 this.encodeURLString = function(string){ 52 varArray = string.split('&'); 53 for (i = 0; i < varArray.length; i++){ 54 urlVars = varArray[i].split('='); 55 if (urlVars[0].indexOf('amp;') != -1){ 56 urlVars[0] = urlVars[0].substring(4); 57 } 58 varArray[i] = this.encVar(urlVars[0],urlVars[1]); 59 } 60 return varArray.join('&'); 61 }; 62 63 this.runResponse = function(){ 64 eval(this.response); 65 }; 66 67 this.runAJAX = function(urlstring){ 68 this.responseStatus = new Array(2); 69 if(this.failed && this.AjaxFailedAlert){ 70 alert(this.AjaxFailedAlert); 71 } else { 72 if (urlstring){ 73 if (this.URLString.length){ 74 this.URLString = this.URLString + "&" + urlstring; 75 } else { 76 this.URLString = urlstring; 77 } 78 } 79 if (this.encodeURIString){ 80 var timeval = new Date().getTime(); 81 this.URLString = this.encodeURLString(this.URLString); 82 this.setVar("rndval", timeval); 83 } 84 if (this.element) { this.elementObj = document.getElementById(this.element); } 85 if (this.xmlhttp) { 86 var self = this; 87 if (this.method == "GET") { 88 var totalurlstring = this.requestFile + "?" + this.URLString; 89 this.xmlhttp.open(this.method, totalurlstring, true); 90 } else { 91 this.xmlhttp.open(this.method, this.requestFile, true); 92 } 93 if (this.method == "POST"){ 94 try { 95 this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'); 96 } catch (e) {} 97 } 98 99 this.xmlhttp.onreadystatechange = function() { 100 switch (self.xmlhttp.readyState){ 101 case 1: 102 self.onLoading(); 103 break; 104 case 2: 105 self.onLoaded(); 106 break; 107 case 3: 108 self.onInteractive(); 109 break; 110 case 4: 111 self.response = self.xmlhttp.responseText; 112 self.responseXML = self.xmlhttp.responseXML; 113 self.responseStatus[0] = self.xmlhttp.status; 114 self.responseStatus[1] = self.xmlhttp.statusText; 115 self.onCompletion(); 116 if(self.execute){ self.runResponse(); } 117 if (self.elementObj) { 118 var elemNodeName = self.elementObj.nodeName; 119 elemNodeName.toLowerCase(); 120 if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea"){ 121 self.elementObj.value = self.response; 122 } else { 123 self.elementObj.innerHTML = self.response; 124 } 125 } 126 self.afterCompletion(); 127 self.URLString = ""; 128 break; 129 } 130 }; 131 this.xmlhttp.send(this.URLString); 132 } 133 } 134 }; 135 this.createAJAX(); 136 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Tue Apr 3 20:47:31 2007 | par Balluche grâce à PHPXref 0.7 |