X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F06_net%2F01_XNetXHR.js;h=746f5a3d76bc0af31867fc4bc41fcce9d2659ac7;hb=4e4ab3be10850546063d4a4b93250ed142bb8cd2;hp=13ee2f9c2338aadd73cd1613f190099fed1a7bcf;hpb=86581b41630966e02d93bc37bc221c5fc55f5322;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/06_net/01_XNetXHR.js b/0.6.x/js/06_net/01_XNetXHR.js index 13ee2f9..746f5a3 100644 --- a/0.6.x/js/06_net/01_XNetXHR.js +++ b/0.6.x/js/06_net/01_XNetXHR.js @@ -84,8 +84,8 @@ var // Opera7.6+, Safari1.2+, khtml3.?+, Gecko0.9.7+ if( X_XHR_createMSXML ){ ( function(){ var x = '.XMLHTTP', - m = 'MSXML2' + x, - n = [ m + ".6.0", m + ".3.0", m + ".5.0", m + ".4.0", m, "Microsoft" + x ], + m = 'Msxml2' + x, + n = [ m + '.6.0', m + '.3.0', m + '.5.0', m + '.4.0', m, 'Microsoft' + x ], v = [ 6, 3, 5, 4, 2, 1 ], i = -1, a; @@ -114,7 +114,7 @@ X[ 'XHR' ] = { * http://hakuhin.jp/as/javascript.html * Flash から JavaScript にアクセスする(3+) */ - 'FLASH' : 4 <= X_Pulgin_FLASH_VERSION ? 8 : 0, + 'FLASH' : 4 <= X_Plugin_FLASH_VERSION ? 8 : 0, 'GADGET' : 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ] ? 16 : 0, @@ -228,8 +228,7 @@ if( X_XHR_w3c || X_XHR_msXML ){ // http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_r_1.html if( !X_XHR._isMsXML && raw.overrideMimeType ){ - type = X_URL_getEXT( url ) || dataType; - switch( type ){ + switch( type = dataType ){ case 'html' : case 'htm' : case 'xml' : @@ -399,7 +398,7 @@ if( X_XHR_w3c || X_XHR_msXML ){ 2: リクエストを受信した 3: リクエストの処理中 4: リクエストは終了してレスポンスの準備が完了 - status 200: "OK" + status 200: 'OK' 404: Page not found If-Modified-Sinceヘッダを利用してWebページのキャッシュを行うXMLHttpRequestラッパー @@ -475,15 +474,15 @@ if( X_XHR_w3c || X_XHR_msXML ){ switch( X_XHR._dataType ){ case '' : case 'text' : - data = raw[ 'responseText' ]; + data = X_Script_try( X_Object_find, [ raw, 'responseText' ] ); break; case 'json' : case 'moz-json' : - data = raw[ 'response' ] || raw[ 'responseText' ]; + data = X_Script_try( X_Object_find, [ raw, 'response' ] ) || X_Script_try( X_Object_find, [ raw, 'responseText' ] ); // eval() を使っているけど JSON の無いブラウザは XDomain な XHR はできないのでよしとする。 // XDomain な XHR の際は Flash 等で代替し、その中に Json parser も組み込む。 // http://d.hatena.ne.jp/sshi/20060904/p1 - if( !X_Type_isObject( data ) ) data = X_JSON_parseTrustableString( data ); + if( X_Type_isString( data ) ) data = X_JSON_parseTrustableString( data ); break; case 'document' : case 'xml' : @@ -499,6 +498,9 @@ if( X_XHR_w3c || X_XHR_msXML ){ data = raw[ 'response' ] || raw[ 'responseText' ]; // とりあえず break; }; + }; + + if( data ){ X_XHR[ 'asyncDispatch' ]( 32, { type : X_EVENT_SUCCESS, status : status || 200, response : data, 'headers' : headers || null } ); } else { X_XHR[ 'asyncDispatch' ]( 32, { type : X_EVENT_ERROR, status : status || 400, 'headers' : headers || null } ); @@ -535,7 +537,7 @@ if( X_XHR_w3c || X_XHR_msXML ){ // return: XML DOM in response body JKL.ParseXML.HTTP.prototype.documentElement = function() { - // debug.print( "documentElement: "+this.req ); + // debug.print( 'documentElement: '+this.req ); if ( ! this.req ) return; if ( this.req.responseXML ) { return this.req.responseXML.documentElement; // XMLHTTPRequest