jQuery ajax鍦℅BK缂栫爜涓嬭〃鍗曟彁浜ょ粓鏋佽В鍐虫柟妗堬紙闈炰簩娆$紪鐮佹柟娉曪級

jQuery ajax鍦℅BK缂栫爜涓嬭〃鍗曟彁浜ょ粓鏋佽В鍐虫柟妗堬紙闈炰簩娆$紪鐮佹柟娉曪級

[鐗堟潈澹版槑]:鐗堟潈褰掍綔鑰呮墍鏈夛紝杞浇鏃惰浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈0鏄�:
http://www.open-lib.com/Forum/Read_69_1.action

鍓嶈█:

褰搄query ajax鍦╱tf-8缂栫爜涓嬶紙椤甸潰utf锛�8锛屾帴鏀秛tf-8锛夛紝鏃犱换浣曢棶棰樸�傚彲浠ユ甯竝ost銆乬et锛屽鐞嗛〉闈㈢洿鎺ヨ幏鍙栨纭殑鍐呭銆�

浣嗗湪浠ヤ笅鎯呭喌涓�:

GBK -> AJAX POST ->GBK

UTF-8 -> AJAX POST ->GBK

鍚庡彴浠g爜鏃犳硶鑾峰彇姝g‘鐨勫唴瀹癸紝閫氬父琛ㄧ幇涓鸿幏鍙栧埌濂囨�瓧绗︺�侀棶鍙枫��

缁忓吀瑙e喅鏂规硶锛�

1锛氬彂閫侀〉闈€�佹帴鏀堕〉闈㈠潎閲囩敤UTF-8缂栫爜銆�

2锛氬彂閫侀〉闈㈠湪璋冪敤ajax post鏂规硶涔嬪墠锛屽皢鍚湁涓枃鍐呭鐨刬nput鐢╡ncodeURIComponent缂栫爜涓�娆★紝鑰屾帴鏀堕〉闈㈠垯璋冪敤瑙g爜鏂规硶锛� 濡傦細java.net.urldecoder.decode("鎺ユ敹鍒板唴瀹�","utf-8")  锛夈��


鍏朵腑锛岀涓�绉嶆柟娉曟棤鐤戞槸鏈�绠�鍗曘�佹渶鐩存帴锛屼絾寰�寰�涓嶇鍚堝疄闄咃紝鍥犱负寰堝椤圭洰骞朵笉鏄娇鐢╱tf-8缂栫爜锛屼緥濡傚浗鍐呭ぇ閮ㄥ垎浣跨敤gbk缂栫爜锛屼篃涓嶅彲鑳戒负浜嗚В鍐宠繖鏍蜂竴涓棶棰橈紝鑰屽皢鏁翠釜椤圭洰杞崲涓簎tf-8缂栫爜锛屾垚鏈お澶э紝椋庨櫓澶珮銆�

绗簩鏂规硶锛屾槸鐜板湪鏈�澶氫汉浣跨敤鐨勬柟娉曪紝淇楃О浜屾缂栫爜锛屼负浠�涔堝彨浜屾缂栫爜锛岀瓑涓嬩細瑙i噴銆傚鎴风缂栫爜涓ゆ锛屾湇鍔$瑙g爜涓ゆ銆備絾杩欑鏂规硶涓嶅ソ鐨勫湴鏂癸紝灏辨槸鍓嶅彴鎵嬪姩缂栫爜涓�娆★紝鍚庡彴鍐嶆墜鍔ㄨВ鐮佷竴娆★紝绋嶄笉鐣欑灏变細蹇樿锛岃�屼笖浠g爜鎺哄拰鍓嶅彴閫昏緫銆�

浜や簰杩囩▼锛�

褰撴垜浠娇鐢ㄨ〃鍗曟寜鐓т紶缁熸柟寮弍ost鎻愪氦鏃跺�欙紙闈濧JAX鎻愪氦锛夛紝娴忚鍣ㄤ細鏍规嵁褰撳墠椤甸潰缂栫爜锛宔ncode涓�娆★紝鐒跺悗鍙戦�佸埌鏈嶅姟绔紝鏈嶅姟绔帴鏀跺埌琛ㄥ崟锛屼細鑷姩dencode涓�娆★紝閫氬父杩欎釜杩囩▼鏄绋嬪簭鏄�忔槑鐨勶紝鍥犳鍔犱笂鎵嬪姩缂栫爜銆佽В鐮侊紝灏卞彉鎴愪笂闈㈡墍璇寸殑浜屾缂栫爜銆�

浣嗗綋鎴戜滑浣跨敤AJAX鏂瑰紡鎻愪氦鏃跺�欙紝娴忚鍣ㄥ苟涓嶄細鑷姩鏇挎垜浠琫ncode锛屽洜姝ゅ湪jquery涓湁杩欐牱鐨勪竴娈典唬鐮侊細

ajax:  function ( s ) {
    
//  Extend the settings, but re-extend 's' so that it can be
     //  checked again later (in the test suite, specifically)
    s  =  jQuery.extend( true , s, jQuery.extend( true , {}, jQuery.ajaxSettings, s));

    
var  jsonp, jsre  =   /=? ( &| $) / g, status, data,
        type 
=  s.type.toUpperCase();

    
//  convert data if not already a string
     if  ( s.data  &&  s.processData  &&   typeof  s.data  !==   " string "  )
        s.data 
=  jQuery.param(s.data);
..    
}

 

浠ヤ笂鏄痡query鐨刟jax鏂规硶鐨勪唬鐮佺墖娈碉紝涓嬮潰鏄甯歌皟鐢╦query ajax post鐨勪唬鐮侊細


   
   
   
   
$.ajax({
 url: ajaxurl,
 type: 'POST',
 dataType: 'html',
 timeout: 
20000 , // 瓒呮椂鏃堕棿璁惧畾
 data:para, // 鍙傛暟璁剧疆
 success:  function (html){

 }
});

閫氳繃涓婇潰浠g爜鍙互鐭ラ亾锛屽綋璁剧疆浜哾ata鏃跺�欙紝jquery鍐呴儴浼氳皟鐢╦Query.param鏂规硶瀵瑰弬鏁癳ncode锛堟墽琛屾湰搴旀祻瑙堝櫒澶勭悊鐨別ncode锛夈��


   
   
   
   
jQuery.param = function ( a ) {
    
var  s  =  [ ];
    
function  add( key, value ){
        s[ s.length ] 
=  encodeURIComponent(key)  +  ' = +  encodeURIComponent(value);
    };
    
//  If an array was passed in, assume that it is an array
     //  of form elements
     if  ( jQuery.isArray(a)  ||  a.jquery )
        
//  Serialize the form elements
        jQuery.each( a,  function (){
            add( 
this .name,  this .value );
        });

    
//  Otherwise, assume that it's an object of key/value pairs
     else
        
//  Serialize the key/values
         for  (  var  j  in  a )
            
//  If the value is an array then the key names need to be repeated
             if  ( jQuery.isArray(a[j]) )
                jQuery.each( a[j], 
function (){
                    add( j, 
this  );
                });
            
else
                add( j, jQuery.isFunction(a[j]) 
?  a[j]() : a[j] );

    
//  Return the resulting serialization
     return  s.join( " & " ).replace( /% 20 / g,  " + " );
}
// jquery.param end

涓婇潰鏄痡Query.param鐨勪唬鐮侊紝缁嗗績鐐瑰彲浠ョ暀鎰忓埌encodeURIComponent杩欐柟娉曪紝杩欐槸javascript鍐呯疆鐨勬柟娉曪紝瀵圭洰鏍囧瓧绗︿覆鎵цutf-8 encode锛屽洜姝わ紝褰撻〉闈娇鐢╣bk缂栫爜鏃跺�欙紝鏈嶅姟绔細浣跨敤gbk杩涜瑙g爜锛屼絾瀹為檯鎻愪氦鐨勬暟鎹槸浠tf-8缂栫爜鐨勶紝鎵�浠ラ�犳垚鎺ユ敹鍒板唴瀹逛负涔辩爜鎴栬�呬负闂彿銆�

瑙e喅鏂规硶锛�

encodeURIComponent浼氫互utf-8缂栫爜锛屽湪gbk缂栫爜涓嬶紝鍙笉鍙互浠bk杩涜缂栫爜鍛紵

濡傛灉杩樺湪鎵揺ncodeURIComponent涓绘剰鐨勮瘽锛岄偅涓嶅ソ鎰忔�濓紝encodeURIComponent鍙細utf-8缂栫爜锛屽苟娌℃湁鍏朵粬api杩涜鍏朵粬缂栫爜锛涗笉杩囷紝鍒媴蹇冿紝鐪嬬湅涓嬮潰锛�

encodeURIComponent锛屽畠鏄皢涓枃銆侀煩鏂囩瓑鐗规畩瀛楃杞崲鎴恥tf-8鏍煎紡鐨剈rl缂栫爜銆�

escape瀵�0-255浠ュ鐨剈nicode鍊艰繘琛岀紪鐮佹椂杈撳嚭%u****鏍煎紡锛屽叾瀹冩儏鍐典笅escape锛宔ncodeURI锛宔ncodeURIComponent缂栫爜缁撴灉鐩稿悓銆�

鍝堝搱锛岀湅鍒板笇鏈涘惂锛熸病閿欙紝灏辨槸鐢�escape浠f浛encodeURIComponent鏂规硶锛屼笉杩囧繀椤绘敞鎰忥細

escape涓嶇紪鐮佸瓧绗︽湁69涓細*锛�+锛�-锛�.锛�/锛�@锛宊锛�0-9锛宎-z锛孉-Z

encodeURIComponent涓嶇紪鐮佸瓧绗︽湁71涓細!锛� '锛�(锛�)锛�*锛�-锛�.锛宊锛寏锛�0-9锛宎-z锛孉-Z

浣跨敤浜�escape涔嬪悗蹇呴』瀵瑰姞鍙疯繘琛岀紪鐮侊紝鍚﹀垯锛屽綋鍐呭鍚湁鍔犲彿鏃跺�欎細琚湇鍔$缈昏瘧涓虹┖鏍笺��

缁堜簬鐭ラ亾瑙e喅鍔炴硶浜嗭紝閲嶅啓jquery浠g爜锛�


   
   
   
   
jQuery.param = function ( a ) {
    
var  s  =  [ ];
    
var  encode = function (str){
        str
= escape(str);
        str
= str.replace( /+/ g, " %u002B " );
        
return  str;
    };
    
function  add( key, value ){
        s[ s.length ] 
=  encode(key)  +  ' = +  encode(value);
    };
    
//  If an array was passed in, assume that it is an array
     //  of form elements
     if  ( jQuery.isArray(a)  ||  a.jquery )
        
//  Serialize the form elements
        jQuery.each( a,  function (){
            add( 
this .name,  this .value );
        });

    
//  Otherwise, assume that it's an object of key/value pairs
     else
        
//  Serialize the key/values
         for  (  var  j  in  a )
            
//  If the value is an array then the key names need to be repeated
             if  ( jQuery.isArray(a[j]) )
                jQuery.each( a[j], 
function (){
                    add( j, 
this  );
                });
            
else
                add( j, jQuery.isFunction(a[j]) 
?  a[j]() : a[j] );

    
//  Return the resulting serialization
     return  s.join( " & " ).replace( /% 20 / g,  " + " );
}

涓婇潰閭f浠g爜骞朵笉闇�瑕佸湪jquery鐨勬簮鏂囦欢閲嶅啓锛屽彲浠ュ湪浣犻」鐩殑javascript璐翠笂锛岃鐩栧畠鍘熸湁鐨勬柟娉曪紝涓嶈繃蹇呴』鍦╦query鍔犺浇涔嬪悗銆�

缁忓垵姝ラ獙璇侊紝涓婇潰閭f浠g爜鍦╱tf-8缂栫爜涔熷彲浠ュ伐浣滄甯革紝澶ф鏄紪鐮佹垚unicode鐨勭紭鏁呭惂銆�

杩欐牱锛屽氨涓嶆槸闇�瑕佷娇鐢ㄤ粈涔堜簩娆$紪鐮侊紝鍗冲奖鍝嶅墠鍙帮紝鍙堝奖鍝嶅悗鍙般�俫bk缂栫爜涓媋jax post涓嶅啀鏄棶棰樹簡锛屾涔冩槸缁堟瀬瑙e喅鏂规硶銆傚搱鍝堛��

鏈夊叴瓒g殑鍙互鍒�http://www.open-lib.com/Forum/Read_69_1.action涓庝綔鑰呬氦娴併��



你可能感兴趣的:(jQuery ajax鍦℅BK缂栫爜涓嬭〃鍗曟彁浜ょ粓鏋佽В鍐虫柟妗堬紙闈炰簩娆$紪鐮佹柟娉曪級)