[12948] | 1 | //==============================================================================
|
---|
| 2 | // SYSTEM : »ÃÄêÈÇ¥¯¥í¥¹¥Ö¥é¥¦¥¶AjaxÍѥ饤¥Ö¥é¥ê
|
---|
| 3 | // PROGRAM : XMLHttpRequest¤Ë¤è¤ëÁ÷¼õ¿®¤ò¹Ô¤¤¤Þ¤¹
|
---|
| 4 | // AUTHER : Toshirou Takahashi http://jsgt.org/mt/01/
|
---|
| 5 |
|
---|
| 6 |
|
---|
| 7 | ////
|
---|
| 8 | // Æ°ºî²Äǽ¤Ê¥Ö¥é¥¦¥¶È½Äê
|
---|
| 9 | //
|
---|
| 10 | // @sample if(chkAjaBrowser()){ location.href='nonajax.htm' }
|
---|
| 11 | // @sample oj = new chkAjaBrowser();if(oj.bw.safari){ /* Safari code */ }
|
---|
| 12 | // @return ¥é¥¤¥Ö¥é¥ê¤¬Æ°ºî²Äǽ¤Ê¥Ö¥é¥¦¥¶¤À¤±true true|false
|
---|
| 13 | //
|
---|
| 14 | // Enable list (v038¸½ºß)
|
---|
| 15 | // WinIE 5.5+
|
---|
| 16 | // Konqueror 3.3+
|
---|
| 17 | // AppleWebKit·Ï(Safari,OmniWeb,Shiira) 124+
|
---|
| 18 | // Mozilla·Ï(Firefox,Netscape,Galeon,Epiphany,K-Meleon,Sylera) 20011128+
|
---|
| 19 | // Opera 8+
|
---|
| 20 | //
|
---|
| 21 |
|
---|
| 22 | function chkAjaBrowser()
|
---|
| 23 | {
|
---|
| 24 | var a,ua = navigator.userAgent;
|
---|
| 25 | this.bw= {
|
---|
| 26 | safari : ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0].split('.')[0]:0)>=124 ,
|
---|
| 27 | konqueror : ((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3 ,
|
---|
| 28 | mozes : ((a=ua.split('Gecko/')[1])?a.split(' ')[0]:0) >= 20011128 ,
|
---|
| 29 | opera : (!!window.opera) && ((typeof XMLHttpRequest)=='function') ,
|
---|
| 30 | msie : (!!window.ActiveXObject)?(!!createHttpRequest()):false
|
---|
| 31 | }
|
---|
| 32 | return (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie)
|
---|
| 33 | }
|
---|
| 34 |
|
---|
| 35 | ////
|
---|
| 36 | // XMLHttpRequest¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®
|
---|
| 37 | //
|
---|
| 38 | // @sample oj = createHttpRequest()
|
---|
| 39 | // @return XMLHttpRequest¥ª¥Ö¥¸¥§¥¯¥È(¥¤¥ó¥¹¥¿¥ó¥¹)
|
---|
| 40 | //
|
---|
| 41 | function createHttpRequest()
|
---|
| 42 | {
|
---|
| 43 | if(window.XMLHttpRequest){
|
---|
| 44 | //Win Mac Linux m1,f1,o8 Mac s1 Linux k3 & Win e7ÍÑ
|
---|
| 45 | return new XMLHttpRequest() ;
|
---|
| 46 | } else if(window.ActiveXObject){
|
---|
| 47 | //Win e4,e5,e6ÍÑ
|
---|
| 48 | try {
|
---|
| 49 | return new ActiveXObject('Msxml2.XMLHTTP') ;
|
---|
| 50 | } catch (e) {
|
---|
| 51 | try {
|
---|
| 52 | return new ActiveXObject('Microsoft.XMLHTTP') ;
|
---|
| 53 | } catch (e2) {
|
---|
| 54 | return null ;
|
---|
| 55 | }
|
---|
| 56 | }
|
---|
| 57 | } else {
|
---|
| 58 | return null ;
|
---|
| 59 | }
|
---|
| 60 | }
|
---|
| 61 |
|
---|
| 62 | ////
|
---|
| 63 | // Á÷¼õ¿®´Ø¿ô
|
---|
| 64 | //
|
---|
| 65 | // @sample sendRequest(onloaded,'&prog=1','POST','./about2.php',true,true)
|
---|
| 66 | // @sample sendRequest(onloaded,{name:taro,id:123,sel:1},','POST','./about3.php',true,true)
|
---|
| 67 | // @sample sendRequest({onload:loaded,onbeforsetheader:sethead},'',','POST','./about3.php',true,true)
|
---|
| 68 | // @param {string} callback ¼õ¿®»þ¤Ëµ¯Æ°¤¹¤ë´Ø¿ô̾
|
---|
| 69 | // @param {object} callback ¼õ¿®»þ¤Ëµ¯Æ°¤¹¤ë´Ø¿ô̾¤È¥Ø¥Ã¥À»ØÄê´Ø¿ô̾{onload:´Ø¿ô̾,onbeforsetheader:´Ø¿ô̾}
|
---|
| 70 | // @param {array} callback ¼õ¿®»þ¤Ëµ¯Æ°¤¹¤ë´Ø¿ô̾¤È¥Ø¥Ã¥À»ØÄê ary['onload']=´Ø¿ô̾;ary['onbeforsetheader']=´Ø¿ô̾
|
---|
| 71 | // @see http://jsgt.org/ajax/ref/head_test/header/Range/004/sample.htm
|
---|
| 72 | // @param {string} data Á÷¿®¤¹¤ë¥Ç¡¼¥¿ string¤Î¾ì¹ç(&̾Á°1=ÃÍ1&̾Á°2=ÃÍ2...)
|
---|
| 73 | // @param {object} data Á÷¿®¤¹¤ë¥Ç¡¼¥¿ object¤Î¾ì¹ç{̾Á°1:ÃÍ1,̾Á°2:ÃÍ2,...}
|
---|
| 74 | // @param {array} data Á÷¿®¤¹¤ë¥Ç¡¼¥¿ array¤Î¾ì¹ç¤ÏÏ¢ÁÛÇÛÎó ary['̾Á°1']=ÃÍ1;ary['̾Á°2']=ÃÍ2
|
---|
| 75 | // @param {string}method 'POST' or 'GET'
|
---|
| 76 | // @param {string}url ¥ê¥¯¥¨¥¹¥È¤¹¤ë¥Õ¥¡¥¤¥ë¤ÎURL
|
---|
| 77 | // @param {string}async ÈóƱ´ü¤Ê¤étrue Ʊ´ü¤Ê¤éfalse
|
---|
| 78 | // @param {string}sload ¥¹¡¼¥Ñ¡¼¥í¡¼¥É true¤Ç¶¯À©¡¢¾Êά¤Þ¤¿¤Ïfalse¤Ç¥Ç¥Õ¥©¥ë¥È
|
---|
| 79 | // @param {string}user ǧ¾Ú¥Ú¡¼¥¸Íѥ桼¥¶¡¼Ì¾
|
---|
| 80 | // @param {string}password ǧ¾Ú¥Ú¡¼¥¸Íѥѥ¹¥ï¡¼¥É
|
---|
| 81 | //
|
---|
| 82 | sendRequest.README = {
|
---|
| 83 | url : 'http://jsgt.org/ajax/ref/lib/ref.htm',
|
---|
| 84 | name : 'sendRequest',
|
---|
| 85 | version : 0.51,
|
---|
| 86 | license : 'Public Domain',
|
---|
| 87 | author : 'Toshiro Takahashi http://jsgt.org/mt/01/',memo:''
|
---|
| 88 | };
|
---|
| 89 | function sendRequest(callback,data,method,url,async,sload,user,password)
|
---|
| 90 | {
|
---|
| 91 | //XMLHttpRequest¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®
|
---|
| 92 | var oj = createHttpRequest();
|
---|
| 93 | if( oj == null ) return null;
|
---|
| 94 |
|
---|
| 95 | //¶¯À©¥í¡¼¥É¤ÎÀßÄê
|
---|
| 96 | var sload = (!!sendRequest.arguments[5])?sload:false;
|
---|
| 97 | if(sload || method.toUpperCase() == 'GET')url += '?';
|
---|
| 98 | if(sload)url=url+'t='+(new Date()).getTime();
|
---|
| 99 |
|
---|
| 100 | //¥Ö¥é¥¦¥¶È½Äê
|
---|
| 101 | var bwoj = new chkAjaBrowser();
|
---|
| 102 | var opera = bwoj.bw.opera;
|
---|
| 103 | var safari = bwoj.bw.safari;
|
---|
| 104 | var konqueror = bwoj.bw.konqueror;
|
---|
| 105 | var mozes = bwoj.bw.mozes ;
|
---|
| 106 |
|
---|
| 107 | //callback¤òʬ²ò
|
---|
| 108 | //{onload:xxxx,onbeforsetheader:xxx}
|
---|
| 109 | if(typeof callback=='object'){
|
---|
| 110 | var callback_onload = callback.onload;
|
---|
| 111 | var callback_onbeforsetheader = callback.onbeforsetheader;
|
---|
| 112 | } else {
|
---|
| 113 | var callback_onload = callback;
|
---|
| 114 | var callback_onbeforsetheader = null;
|
---|
| 115 | }
|
---|
| 116 |
|
---|
| 117 | //¼õ¿®½èÍý
|
---|
| 118 | //opera¤Ïonreadystatechange¤Ë¿½Å¥ì¥¹¥Ð¥°¤¬¤¢¤ë¤Î¤Çonload¤¬°ÂÁ´
|
---|
| 119 | //Moz,FireFox¤Ïoj.readyState==3¤Ç¤â¼õ¿®¤¹¤ë¤Î¤ÇÄ̾ï¤Ïonload¤¬°ÂÁ´
|
---|
| 120 | //Win ie¤Ç¤Ïonload¤ÏÆ°ºî¤·¤Ê¤¤
|
---|
| 121 | //Konqueror¤Ïonload¤¬ÉÔ°ÂÄê
|
---|
| 122 | //»²¹Íhttp://jsgt.org/ajax/ref/test/response/responsetext/try1.php
|
---|
| 123 | if(opera || safari || mozes){
|
---|
| 124 | oj.onload = function () { callback_onload(oj); }
|
---|
| 125 | } else {
|
---|
| 126 |
|
---|
| 127 | oj.onreadystatechange =function ()
|
---|
| 128 | {
|
---|
| 129 | if ( oj.readyState == 4 ){
|
---|
| 130 | //alert(oj.status+'--'+oj.getAllResponseHeaders());
|
---|
| 131 | callback_onload(oj);
|
---|
| 132 | }
|
---|
| 133 | }
|
---|
| 134 | }
|
---|
| 135 |
|
---|
| 136 | //URL¥¨¥ó¥³¡¼¥É
|
---|
| 137 | data = uriEncode(data,url);
|
---|
| 138 | if(method.toUpperCase() == 'GET') {
|
---|
| 139 | url += data
|
---|
| 140 | }
|
---|
| 141 |
|
---|
| 142 | //open ¥á¥½¥Ã¥É
|
---|
| 143 | oj.open(method,url,async,user,password);
|
---|
| 144 |
|
---|
| 145 |
|
---|
| 146 | //¥ê¥¯¥¨¥¹¥È¥Ø¥Ã¥À¥«¥¹¥¿¥Þ¥¤¥ºÍÑ¥³¡¼¥ë¥Ð¥Ã¥¯
|
---|
| 147 | //»È¤¦¾ì¹ç¤Ï¡¢¸Æ¤Ó½Ð¤·HTML¦¤Îwindowľ²¼¤Ø¥°¥í¡¼¥Ð¥ë¤Ê´Ø¿ôsetHeaders¤ò
|
---|
| 148 | //µ½Ò¤·¡¢¤½¤ÎÃæ¤ÇsetRequestHeader()¤ò¥»¥Ã¥È¤·¤Æ¤¯¤À¤µ¤¤
|
---|
| 149 | //@sample function setHeaders(oj){oj.setRequestHeader('Content-Type',contentTypeUrlenc)}
|
---|
| 150 | //
|
---|
| 151 | if(!!callback_onbeforsetheader)callback_onbeforsetheader(oj);
|
---|
| 152 |
|
---|
| 153 | //¥Ç¥Õ¥©¥ë¥È¥Ø¥Ã¥Àapplication/x-www-form-urlencoded¥»¥Ã¥È
|
---|
| 154 | setEncHeader(oj);
|
---|
| 155 |
|
---|
| 156 |
|
---|
| 157 | //¥Ç¥Ð¥Ã¥¯
|
---|
| 158 | //alert('////jslb_ajaxxx.js//// \n data:'+data+' \n method:'+method+' \n url:'+url+' \n async:'+async);
|
---|
| 159 |
|
---|
| 160 | //send ¥á¥½¥Ã¥É
|
---|
| 161 | oj.send(data);
|
---|
| 162 |
|
---|
| 163 | //URI¥¨¥ó¥³¡¼¥É¥Ø¥Ã¥À¥»¥Ã¥È
|
---|
| 164 | function setEncHeader(oj){
|
---|
| 165 |
|
---|
| 166 | //¥Ø¥Ã¥Àapplication/x-www-form-urlencoded¥»¥Ã¥È
|
---|
| 167 | // @see http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.3
|
---|
| 168 | // @see #h-17.3
|
---|
| 169 | // ( enctype ¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 'application/x-www-form-urlencoded')
|
---|
| 170 | // h-17.3¤Ë¤è¤ê¡¢POST/GETÌä¤ï¤ºÀßÄê
|
---|
| 171 | // POST¤Ç'multipart/form-data'¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¥«¥¹¥¿¥Þ¥¤¥º¤·¤Æ¤¯¤À¤µ¤¤¡£
|
---|
| 172 | //
|
---|
| 173 | // ¤³¤Î¥á¥½¥Ã¥É¤¬Win Opera8.0¤Ç¥¨¥é¡¼¤Ë¤Ê¤Ã¤¿¤Î¤Çʬ´ô(8.01¤ÏOK)
|
---|
| 174 | var contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';
|
---|
| 175 | if(!window.opera){
|
---|
| 176 | oj.setRequestHeader('Content-Type',contentTypeUrlenc);
|
---|
| 177 | } else {
|
---|
| 178 | if((typeof oj.setRequestHeader) == 'function')
|
---|
| 179 | oj.setRequestHeader('Content-Type',contentTypeUrlenc);
|
---|
| 180 | }
|
---|
| 181 | return oj
|
---|
| 182 | }
|
---|
| 183 |
|
---|
| 184 | //URL¥¨¥ó¥³¡¼¥É
|
---|
| 185 | //°ú¿ôdata¤Ï¡¢string¤«object¤ÇÅϤ»¤Þ¤¹
|
---|
| 186 | function uriEncode(data,url){
|
---|
| 187 | var encdata =(url.indexOf('?')==-1)?'?dmy':'';
|
---|
| 188 | if(typeof data=='object'){
|
---|
| 189 | for(var i in data)
|
---|
| 190 | encdata+='&'+encodeURIComponent(i)+'='+encodeURIComponent(data[i]);
|
---|
| 191 | } else if(typeof data=='string'){
|
---|
| 192 | if(data=='')return '';
|
---|
| 193 | //&¤È=¤Ç°ìöʬ²ò¤·encode
|
---|
| 194 | var encdata = '';
|
---|
| 195 | var datas = data.split('&');
|
---|
| 196 | for(var i=1;i<datas.length;i++)
|
---|
| 197 | {
|
---|
| 198 | var dataq = datas[i].split('=');
|
---|
| 199 | encdata += '&'+encodeURIComponent(dataq[0])+'='+encodeURIComponent(dataq[1]);
|
---|
| 200 | }
|
---|
| 201 | }
|
---|
| 202 | return encdata;
|
---|
| 203 | }
|
---|
| 204 |
|
---|
| 205 | return oj
|
---|
[12978] | 206 | } |
---|