OSDN Git Service

Version 0.6.150, fix X.Net.
[pettanr/clientJs.git] / 0.6.x / js / 06_net / 05_XXHRGadget.js
index 61cb641..0a04809 100644 (file)
@@ -44,7 +44,7 @@ var X_NET_GIMR_canUse         = 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ],
 \r
 function X_NET_GIMR_detectImageOverIframe(){\r
        var raw = X_NET_GIMR_gadgetIframe[ '_rawObject' ],\r
-               iwin, ret;\r
+               iwin, ret, error, data = null;\r
        \r
        if( raw ){\r
                iwin = raw.contentWindow || ( raw.contentDocument && raw.contentDocument.parentWindow ) || window.frames[ X_NET_GIMR_iframeName ];\r
@@ -66,16 +66,28 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                break;\r
 \r
                                        case 2 : // _waiting_ 通信結果待ち\r
-                                               ret = decodeURIComponent( ret.substr( 1 ) );\r
-                                               ret = window.JSON ? JSON.parse( ret ) : eval( '(' + ret + ')' );\r
+                                               ret = X_String_parseTrustedJsonString( decodeURIComponent( ret.substr( 1 ) ) );\r
+                                               \r
+                                               error = ret[ 'errors' ] && ret[ 'errors' ].length;\r
+                                               \r
+                                               switch( !error && X_NET_GIMR_requestOriginal[ 'dataType' ] ){\r
+                                                       case 'json' :\r
+                                                               data = X_String_parseTrustedJsonString( ret[ 'json' ] || ret[ 'text' ] || '' );\r
+                                                               break;\r
+                                               };\r
+                                               \r
+                                               console.dir( data || ret );\r
                                                \r
                                                X_NET_GIMRWrapper._busy = false;\r
                                                \r
                                                X_NET_GIMRWrapper\r
-                                                       [ 'asyncDispatch' ]( {\r
-                                                               type : ret[ 'errors' ] && ret[ 'errors' ].length ? X_EVENT_ERROR : X_EVENT_SUCCESS,\r
-                                                               data : ret\r
-                                                       } );\r
+                                                       [ 'asyncDispatch' ]({\r
+                                                               type      : error ? X_EVENT_ERROR : X_EVENT_SUCCESS,\r
+                                                               state     : ret[ 'rc' ] || ( error ? 400 : 200 ),\r
+                                                               data      : data,\r
+                                                               'headers' : ret[ 'headers' ],\r
+                                                               'message' : error && ret[ 'errors' ].join( '\n' )\r
+                                                       });\r
                                                iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_';\r
                                                X_NET_GIMR_timerID = X_NET_GIMR_phase = 0;\r
                                                X_NET_GIMR_lastHashString = '';\r
@@ -102,6 +114,10 @@ function X_NET_GIMR_toJSONString( obj ){
 };\r
 \r
 \r
+X_TEMP.X_Net_GIMR_init = function(){\r
+       \r
+delete X_TEMP.X_Net_GIMR_init;\r
+\r
 // TODO extend NinjaIframe\r
 X_NET_GIMRWrapper = X_Class_override(\r
        X_EventDispatcher(),\r
@@ -112,7 +128,7 @@ X_NET_GIMRWrapper = X_Class_override(
                _onloadCount  : 0,\r
                \r
                load : function( obj ){\r
-                       var k;\r
+                       var k, v;\r
                        //createURL\r
                        if( !X_NET_GIMR_gadgetIframe ){\r
                                X_NET_GIMR_gadgetIframe = X_Node_systemNode\r
@@ -131,12 +147,13 @@ X_NET_GIMRWrapper = X_Class_override(
                        \r
                        X_NET_GIMR_timerID = X.Timer.add( 100, 0, X_NET_GIMR_detectImageOverIframe );\r
                        \r
-                       X_NET_GIMR_requestOriginal = X_Object_deepCopy( v );\r
+                       X_NET_GIMR_requestOriginal = X_Object_deepCopy( obj );\r
                        \r
                        X_NET_GIMR_requestOptions = {\r
                                'CONTENT_TYPE'     : 'TEXT',\r
                                'GET_FULL_HEADERS' : true,\r
-                               'REFRESH_INTERVAL' : 0\r
+                               'REFRESH_INTERVAL' : 0,\r
+                               'url'              : obj[ 'url' ]\r
                        };\r
                        \r
                        for( k in obj ){\r
@@ -149,10 +166,23 @@ X_NET_GIMRWrapper = X_Class_override(
                                                        X_NET_GIMR_requestOptions[ 'METHOD' ] = v;\r
                                                        break;                                  \r
                                                case 'dataType' :\r
-                                                       X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = v;\r
+                                                       // TEXT 以外は無視される?\r
+                                                       switch( v = ( '' + v ).toUpperCase() ){\r
+                                                               case 'TEXT' :\r
+                                                               case 'JSON' :\r
+                                                                       X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = v;\r
+                                                                       break;\r
+                                                               case 'DOM'  :\r
+                                                               case 'HTML' :\r
+                                                               case 'HTM'  :\r
+                                                               case 'XML'  :\r
+                                                                       X_NET_GIMR_requestOptions[ 'CONTENT_TYPE' ] = 'DOM';\r
+                                                                       break;\r
+                                                               //case 'FEED' :\r
+                                                       };              \r
                                                        break;\r
                                                case 'headers' :\r
-                                                       X_NET_GIMR_requestOptions[ 'HEADERS' ] = X_Object_clone( v );\r
+                                                       X_NET_GIMR_requestOptions[ 'HEADERS' ] = X_NET_GIMR_requestOriginal[ v ];\r
                                                        break;\r
                                                case 'cashe' :\r
                                                        X_NET_GIMR_requestOptions[ 'REFRESH_INTERVAL' ] = 3600;\r
@@ -174,3 +204,8 @@ X_NET_GIMRWrapper = X_Class_override(
                }\r
        }\r
 );\r
+\r
+return X_NET_GIMRWrapper;\r
+\r
+};\r
+\r