| 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
|
|---|
| 206 | } |
|---|