admin管理员组

文章数量:1301557

I'm using the .load() method in jQuery but I've realized that the request to my server should use ISO-8859-1 charset and not UTF-8. The problem is that I can't find how to set load method to use a different encoding. I read that .ajax method has 'content-type' setting to do this, but what about load method? I find load very useful when I need to update data from some divs without refreshing the page.

Any help would be appreciated, thanks.

I'm using the .load() method in jQuery but I've realized that the request to my server should use ISO-8859-1 charset and not UTF-8. The problem is that I can't find how to set load method to use a different encoding. I read that .ajax method has 'content-type' setting to do this, but what about load method? I find load very useful when I need to update data from some divs without refreshing the page.

Any help would be appreciated, thanks.

Share asked Sep 4, 2012 at 23:30 Jorge ZapataJorge Zapata 2,3361 gold badge31 silver badges57 bronze badges 4
  • 3 What about using ajaxSetup as shown there: stackoverflow./a/330398/1063730 – nuala Commented Sep 4, 2012 at 23:35
  • .load is just a shorthand method for .ajax. If you need more plex functionality than .load provides, use .ajax – MrOBrian Commented Sep 4, 2012 at 23:36
  • @yoshi is right on the money, you simply use $.ajaxSetup and set it there. – Mark Pieszak - Trilon.io Commented Sep 4, 2012 at 23:38
  • Thanks @yoshi why don't you mark your ment as the answer? – Jorge Zapata Commented Sep 4, 2012 at 23:40
Add a ment  | 

2 Answers 2

Reset to default 8

Using ajaxSetup allows you to specify the settings for new ajax calls.

All subsequent Ajax calls using any function will use the new settings, unless overridden by the individual calls, until the next invocation of $.ajaxSetup().

with beforeSend you can provide a callback function to modify the XMLHttpRequest object before it's going to be send. jQuery Reference

Mozilla provides documentation about overrideMimeType():

Overrides the MIME type returned by the server. This may be used, for example, to force a stream to be treated and parsed as text/xml, even if the server does not report it as such.This method must be called before send().

Borrowing code from this answer you could do:

$.ajaxSetup({
    'beforeSend' : function(xhr) {
        xhr.overrideMimeType('text/html; charset=ISO-8859-1');
    },
});
//$('body').append('<div id=qqq>dfsdfsdf</div>')
//$('#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 plete 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("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :

                // Otherwise use the full result
                responseText );

        }).plete( callback && function( jqXHR, status ) {
            self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
        });
    }

    return this;
};

本文标签: javascriptjQuery load method charsetStack Overflow