jQuery加载方法charset
我在jQuery中使用.load()方法,但我意识到对我的服务器的请求应该使用ISO-8859-1 charset而不是UTF-8。 问题是我找不到如何设置load方法来使用不同的编码。 我读到.ajax方法有’content-type’设置来执行此操作,但是加载方法呢? 当我需要更新来自某些div的数据而不刷新页面时,我发现加载非常有用。
任何帮助将不胜感激,谢谢。
使用ajaxSetup
可以指定新的ajax调用的设置。
除非被单个调用覆盖,否则使用任何函数的所有后续Ajax调用都将使用新设置,直到下一次调用$ .ajaxSetup()为止。
使用beforeSend
您可以提供一个回调函数来修改XMLHttpRequest对象,然后再发送它。 jQuery参考
Mozilla提供了有关overrideMimeType()
文档:
覆盖服务器返回的MIME类型。 例如,这可以用于强制将流处理并解析为text / xml,即使服务器不报告它也是如此。必须在send()之前调用此方法。
借用这个答案你可以做的代码:
$.ajaxSetup({ 'beforeSend' : function(xhr) { xhr.overrideMimeType('text/html; charset=ISO-8859-1'); }, });
//$('body').append('dfsdfsdf') //$('#qqq').load2('/index.php?showtopic=925 #post-29397','','','text/html; charset=utf-8') //$('#qqq').load2('/index.php?showtopic=925 #post-29397','','','text/plain; charset=windows-1251') // jQuery.fn.load2 = function( url, params, callback, overrideMimeTypeVar) { if ( typeof url !== "string" && _load ) { return _load.apply( this, arguments ); } var selector, type, response, self = this, off = url.indexOf(" "); if ( off >= 0 ) { selector = jQuery.trim( url.slice( off ) ); url = url.slice( 0, off ); } // If it's a function if ( jQuery.isFunction( params ) ) { // We assume that it's the callback callback = params; params = undefined; // Otherwise, build a param string } else if ( params && typeof params === "object" ) { type = "POST"; } // If we have elements to modify, make the request if ( self.length > 0 ) { jQuery.ajax({ url: url, // if "type" variable is undefined, then "GET" method will be used type: type, dataType: "html", data: params, // ++++++++++++++++++++++++++++++++++++++++++++++++++ beforeSend: function(x) { if(x && x.overrideMimeType && overrideMimeTypeVar!=''){ x.overrideMimeType(overrideMimeTypeVar); }} // +++++++++++++++++++++++++++++++++++++++++++++++++++ }).done(function( responseText ) { // Save response for use in complete callback response = arguments; self.html( selector ? // If a selector was specified, locate the right elements in a dummy div // Exclude scripts to avoid IE 'Permission Denied' errors jQuery("").append( jQuery.parseHTML( responseText ) ).find( selector ) : // Otherwise use the full result responseText ); }).complete( callback && function( jqXHR, status ) { self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); }); } return this; };