X-Git-Url: http://git.osdn.jp/view?p=pettanr%2FclientJs.git;a=blobdiff_plain;f=0.6.x%2Fjs%2F06_net%2F01_XNetXHR.js;fp=0.6.x%2Fjs%2F06_net%2F01_XNetXHR.js;h=2c1d73a6d88c9c24fb41cfaf9d73fa60a4752b6d;hp=c03b6358de445ebb1169611a26b3c6d686683cf6;hb=9e607206c5510435fc1daeac93a19427ce33cc6f;hpb=66ccef8a1fdd3994dd3c75dcfede668ea55f1d2e diff --git a/0.6.x/js/06_net/01_XNetXHR.js b/0.6.x/js/06_net/01_XNetXHR.js index c03b635..2c1d73a 100644 --- a/0.6.x/js/06_net/01_XNetXHR.js +++ b/0.6.x/js/06_net/01_XNetXHR.js @@ -171,7 +171,7 @@ if( X_XHR_w3c || X_XHR_msXML ){ postdata = obj[ 'postdata' ] || '', timeout = obj[ 'timeout' ] || 20000, noCache = obj[ 'cache' ] !== true, - dataType = X_XHR._dataType = obj[ 'dataType' ], // ext が入っている + dataType = X_XHR._dataType = obj[ 'dataType' ], // 明示され無い場合、ext が入っている xDomain = !X_URL_isSameDomain( url ), isFile = X_URL_isLocal( url ), init, @@ -210,13 +210,15 @@ if( X_XHR_w3c || X_XHR_msXML ){ raw.responseType = X_XHR._dataType = 'text'; break; case 'json' : // firefox9- は moz-json - raw.responseType = X_XHR._dataType = X_UA[ 'Gecko' ] < 10 ? 'moz-json' : X_UA[ 'Gecko' ] ? dataType : ''; // Iron 37 でエラー + raw.responseType = X_UA[ 'Gecko' ] < 10 ? 'moz-json' : X_UA[ 'Gecko' ] ? dataType : ''; // Iron 37 でエラー + //X_XHR._dataType = 'json'; break; case 'document' : case 'xml' : case 'html' : case 'htm' : - // svg + case 'svg' : + case 'vml' : raw.responseType = X_XHR._dataType = 'document'; break; case 'blob' : @@ -230,24 +232,27 @@ 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 ){ switch( type = dataType ){ + case 'document' : + case 'xml' : case 'html' : case 'htm' : - case 'xml' : + case 'svg' : + case 'vml' : tmp = 'text/xml'; break; case 'json' : tmp = 'application/json'; break; case 'mp3' : - type = 'mpeg'; + tmp = 'mpeg'; case 'weba' : - type = type || 'webm'; + tmp = tmp || 'webm'; case 'opus' : - type = type || 'ogg'; + tmp = tmp || 'ogg'; case 'ogg' : case 'wav' : case 'aac' : - tmp = 'audio/' + type; + tmp = 'audio/' + ( tmp || type ); break; case 'm4a' : case 'mp4' : @@ -263,7 +268,7 @@ if( X_XHR_w3c || X_XHR_msXML ){ break; }; - if( tmp = obj[ 'mimeType' ] || tmp ) raw.overrideMimeType( tmp ); + if( obj[ 'mimeType' ] || tmp ) raw.overrideMimeType( obj[ 'mimeType' ] || tmp ); }; if( !X_XHR._isXDR && ( X_XHR._isMsXML ? 3 <= X_XHR_msXMLVer : raw.setRequestHeader ) ){ // msxml は setRequestHeader getter がいけない @@ -274,11 +279,10 @@ if( X_XHR_w3c || X_XHR_msXML ){ headers[ 'Cache-Control' ] = 'no-cache'; headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT'; } */ - - // http://nakigao.sitemix.jp/blog/?p=2040 - // json 取得時に SafariでHTTP/412のエラー。但し相手が audio の場合この指定があるとロードに失敗する。 iOS8.2, iOS7.1 では遭遇せず - if( dataType === 'json' ){ - headers[ 'If-Modified-Since' ] = ( new Date ).toUTCString(); + + // http://8note.phpapps.jp/jquery-ajax%E3%81%A7%E3%81%AE412%E3%82%A8%E3%83%A9%E3%83%BC/ + if( dataType === 'json' && X_UA[ 'Safari' ] ){ + headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT'; }; // http://boscono.hatenablog.com/entry/2013/12/23/152851 @@ -477,7 +481,6 @@ if( X_XHR_w3c || X_XHR_msXML ){ data = X_Script_try( X_Object_find, [ raw, 'responseText' ] ); break; case 'json' : - case 'moz-json' : 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 も組み込む。