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