OSDN Git Service

Version 0.6.150, fix X.Net.
[pettanr/clientJs.git] / 0.6.x / js / 06_net / 01_XNetXHR.js
index 843b5dc..8d16cfa 100644 (file)
@@ -45,6 +45,7 @@ var // Opera7.6+, Safari1.2+, khtml3.?+, Gecko0.9.7+
        // ie7&8 ではローカルリソースには ActiveX の XHR を使う\r
        X_Net_XHR_createW3C   = window[ 'XMLHttpRequest' ] && function(){ return X_Net_XHR_w3c || ( X_Net_XHR_w3c = new XMLHttpRequest() ); },\r
        X_Net_XHR_w3c         = X_Net_XHR_createW3C && X_Net_XHR_createW3C(),\r
+       X_Net_XHR_cors        = X_Net_XHR_w3c && X_Net_XHR_w3c.withCredentials !== undefined,\r
        X_Net_XHR_progress    = X_Net_XHR_w3c && X_Net_XHR_w3c.onprogress !== undefined,\r
        X_Net_XHR_upload      = X_Net_XHR_w3c && !!X_Net_XHR_w3c.upload,\r
        \r
@@ -106,7 +107,7 @@ X[ 'XHR' ] = {
        'UPLOAD_PROGRESS' : X_Net_XHR_upload,\r
 \r
        // or gadget proxy or flash\r
-       'CORS'            : X_Net_XHR_xdr || ( X_Net_XHR_w3c && X_Net_XHR_w3c.withCredentials !== undefined )\r
+       'CORS'            : X_Net_XHR_xdr || X_Net_XHR_cors\r
 };\r
 \r
 if( X_Net_XHR_msXMLVer ) X[ 'XHR' ][ 'MSXML_VERSION' ] = X_Net_XHR_msXMLVer;\r
@@ -151,13 +152,16 @@ X_TEMP.X_Net_XHR_init = function(){
                                        init,\r
                                        tmp;\r
 \r
-                               this._dataType = obj[ 'dataType' ] || X_URL_getEXT( url );\r
+                               this._dataType = obj[ 'dataType' ];\r
                                \r
                                if( !raw || xDomain !== this._isXDR || ( X_Net_XHR_createMSXML && isFile !== this._isMsXML ) ){\r
                                        raw && this[ 'unlisten' ]( [ 'load', 'readystatechange', 'progress', 'error', 'timeout' ] );\r
                                        init = true;\r
                                        this[ '_rawObject' ] = raw = xDomain ?\r
-                                                                                                       X_Net_XHR_createXDR() :\r
+                                                                                                       ( X_Net_XHR_cors ?\r
+                                                                                                               X_Net_XHR_createW3C() :\r
+                                                                                                               X_Net_XHR_createXDR()\r
+                                                                                                       ) :\r
                                                                                                 isFile ?\r
                                                                                                        ( X_Net_XHR_createMSXML ?\r
                                                                                                                ( X_Net_XHR_msXML = X_Net_XHR_msXML || X_Net_XHR_createMSXML() ):\r
@@ -182,7 +186,7 @@ X_TEMP.X_Net_XHR_init = function(){
                                                        raw.responseType = 'text';\r
                                                        break;\r
                                                case 'json' :\r
-                                               case 'moz-json' :\r
+                                               case 'moz-json' : // firefox9-\r
                                                        raw.responseType = X_UA[ 'Gecko' ] ? this._dataType : ''; // Iron 37 でエラー\r
                                                        break;\r
                                                case 'document' :\r
@@ -260,6 +264,7 @@ X_TEMP.X_Net_XHR_init = function(){
                                        \r
                                        for( p in headers ){\r
                                                if( X_EMPTY_OBJECT[ p ] ) continue;\r
+                                               console.log( headers[ p ] );\r
                                                headers[ p ] !== undefined && raw.setRequestHeader( p, headers[ p ] + '' ); // Opera8.01+, MSXML3+\r
                                        };\r
                                };\r
@@ -430,7 +435,7 @@ X_TEMP.X_Net_XHR_init = function(){
                                                                        // eval() を使っているけど JSON の無いブラウザは XDomain な XHR はできないのでよしとする。\r
                                                                        // XDomain な XHR の際は Flash 等で代替し、その中に Json parser も組み込む。\r
                                                                        // http://d.hatena.ne.jp/sshi/20060904/p1\r
-                                                                       if( !X_Type_isObject( data ) ) data = window.JSON ? JSON.parse( data ) : eval( '(' + data + ')' );\r
+                                                                       if( !X_Type_isObject( data ) ) data = X_String_parseTrustedJsonString( data );\r
                                                                        break;\r
                                                                case 'document' :\r
                                                                case 'xml' :\r