* <h4>XHR 用プロパティ</h4>\r
* <dl>\r
* <dt>method<dd>'GET', 'POST' 未指定かつ postdata を設定している場合、'POST' になる。\r
+ * <dt>params<dd>url パラメータを object で渡すことが出来る。\r
* <dt>postdata<dd>string, object の場合は X.String.serialize される。\r
* <dt>async<dd>boolean\r
* <dt>username<dd>BASIC 認証\r
* <dt>canUse<dd>未実装。gadget proxy, YQL, YPipes 等のマッシュアップの許可。現在は test : 'gadget' としている\r
* </dl>\r
* \r
+ * <h4>JSONP 用プロパティ</h4>\r
+ * <dl>\r
+ * <dt>params<dd>url パラメータを object で渡すことが出来る。\r
+ * <dt>callbackName<dd>callback(json) コールバック名が固定されている際に指定。または &callback=hoge 以外の名前でコールバックを指定する場合に params と callbackName に書いておく。url パラメータに callback が無く、callbackName もない場合、フレームワーク内で自動で設定される\r
+ * <dt>charset<dd>ページと異なるjsonpを読み込む場合に指定 'EUC-JP', 'Shift-JIS' 等 script タグの charset に入る。https://code.google.com/p/ajaxzip3/issues/detail?id=5\r
+ * <dt>useFireWall<dd>異なるドメインに jsonp を読み込んだ後、xdomain iframe 通信を使ってデータを受け取る。不正なコードの実行を防ぐことが出来る、未実装\r
+ * </dl>\r
+ * \r
* @alias X.Net\r
* @class 各種ネットワーク機能をラップしインターフェイスを共通化する。\r
* @constructs Net\r
* .listen( X.Event.PROGRESS )\r
* .listenOnce( [ X.Event.SUCCESS, X.Event.ERROR, X.Event.TIMEOUT, X.Event.CANCELED ] );\r
* \r
+ * // XHR - GET \r
+ * var net = X.Net( urlString );\r
+ * \r
* // XHR - POST \r
* var net = X.Net( { xhr : urlString, postdata : myData } );\r
* \r
* // JSONP\r
- * var net = X.Net( { jsonp : urlString, staticCallbackName : callbackName, useXDomainWall : false } );\r
+ * var net = X.Net( { jsonp : urlString, params : params, callbackName : callbackName, charset : charset, useFireWall : false } );\r
* \r
* // Form\r
* var net = X.Net( { form : urlString, method : 'POST', target : '_self', params : {} } ); // _self, _parent, _top の場合、ページから離脱する\r
'netVersion' : 0,\r
\r
'Constructor' : function( urlOrObject, opt_options ){\r
- var v, opt, url, type, auth;\r
+ var opt, url, type, auth;\r
\r
if( X_Type_isObject( opt = urlOrObject ) ){\r
- if( X_Type_isString( v = opt[ 'xhr' ] ) ){\r
- url = v;\r
+ if( X_Type_isString( url = opt[ 'xhr' ] ) ){\r
type = X_NET_TYPE_XHR;\r
} else\r
- if( X_Type_isString( v = opt[ 'jsonp' ] ) ){\r
- url = v;\r
+ if( X_Type_isString( url = opt[ 'jsonp' ] ) ){\r
type = X_NET_TYPE_JSONP;\r
} else\r
- if( X_Type_isString( v = opt[ 'img' ] || opt[ 'image' ] ) ){\r
- url = v;\r
+ if( X_Type_isString( url = opt[ 'img' ] || opt[ 'image' ] ) ){\r
type = X_NET_TYPE_IMAGE;\r
} else\r
- if( X_Type_isString( v = opt[ 'form' ] ) ){\r
- url = v;\r
+ if( X_Type_isString( url = opt[ 'form' ] ) ){\r
type = X_NET_TYPE_FORM;\r
+ //{+dev\r
} else\r
- if( X_Type_isString( v = opt[ 'type' ] ) ){\r
-\r
- switch( v ){\r
- case 'xhr' :\r
- type = X_NET_TYPE_XHR;\r
- break;\r
- case 'jsonp' :\r
- type = X_NET_TYPE_JSONP;\r
- break;\r
- case 'img' :\r
- case 'image' :\r
- type = X_NET_TYPE_IMAGE;\r
- break;\r
- case 'from' :\r
- type = X_NET_TYPE_FORM;\r
- break;\r
- default :\r
- alert( 'X.Net args error' );\r
- return; \r
- };\r
+ if( !( type = X_NET_NAME_TO_ID[ opt[ 'type' ] ] ) ){\r
+ alert( 'X.Net args error' );\r
+ return;\r
+ //}+dev\r
+ } else {\r
url = opt[ 'url' ];\r
};\r
- \r
+ //{+dev\r
if( !X_Type_isString( url ) ){\r
alert( 'X.Net args error' );\r
return;\r
};\r
- \r
+ //}+dev\r
} else\r
if( X_Type_isString( urlOrObject ) ){\r
url = urlOrObject;\r
type = X_NET_TYPE_XHR;\r
opt = { 'url' : url, 'method' : 'GET' };\r
};\r
- \r
+ //{+dev \r
} else {\r
alert( 'X.Net args error' );\r
return;\r
+ //}+dev\r
};\r
\r
+ // auth の退避\r
if( auth = opt[ 'auth' ] ){\r
delete opt[ 'auth' ];\r
};\r
if( auth ){\r
opt[ 'auth' ] = auth; // auth は deep copy されるとまずい\r
};\r
- opt.netType = type;\r
- opt[ 'url' ] = url; \r
+ \r
+ // params を url に追加\r
+ if( opt[ 'params' ] ){\r
+ url = X_URL_create( url, opt[ 'params' ] );\r
+ delete opt[ 'params' ];\r
+ }; \r
\r
if( type === X_NET_TYPE_XHR ){\r
opt[ 'method' ] = opt[ 'method' ] || ( opt[ 'postdata' ] ? 'POST' : 'GET' );\r
- \r
+\r
// XDomain 不可 -> Flash, Gears, Silverlight, canUseGadget なら gadget に切替?\r
// PUT DELETE UPDATE 不可 -> Flash, Gears, Silverlight, canUseGadget なら gadget に切替?\r
// xプロトコル な binary のロード -> gadget 内で proxyURL による XHR\r
opt[ 'dataType' ] = opt[ 'dataType' ] || X_URL_getEXT( url );\r
};\r
\r
+ opt.netType = type;\r
+ opt[ 'url' ] = url; \r
+ \r
X_Pair_create( this, opt );\r
\r
this[ 'listen' ]( [ X_EVENT_BEFORE_KILL_INSTANCE, X_EVENT_KILL_INSTANCE ], X_NET_proxyDispatch );\r
X_NET_TYPE_FORM = 3,\r
X_NET_TYPE_IMAGE = 4,\r
\r
+ X_NET_NAME_TO_ID = {\r
+ 'xhr' : X_NET_TYPE_XHR,\r
+ 'jsonp' : X_NET_TYPE_JSONP,\r
+ 'form' : X_NET_TYPE_FORM,\r
+ 'img' : X_NET_TYPE_IMAGE,\r
+ 'image' : X_NET_TYPE_IMAGE\r
+ },\r
+\r
X_NET_QUEUE_LIST = [],\r
\r
X_NET_XHRWrapper,\r