Ajax Post數據時加號變空格的解決辦法


 

  采用Ajax傳遞數據時,通常會將數據整理為data="var1=abc&var2=def"。而當數據中存在加號(+)或是連接符(&)時,服務器端接收數據時會有部分數據丟失現象。

  分析一下Ajax傳遞數據的格式與Javascript的語法不難發現:
  1. "+"號:JavaScript解析為字符串連接符,所以服務器端接收數據時"+"會丟失。
  2. "&":JavaScript解析為變量連接符,所以服務器端接收數據時&符號以后的數據都會丟失。

  解決辦法也相當簡單,只需要為+與&符號編碼即可:

//使用post方式發送
function  doRequestUsingPOST()
{
     createXMLHttpRequest();
     var  retCode = document.getElementById( "retCode" ).value;
     var  data = document.getElementById( "data" ).value;
     data = data.replace(/\+/g,  "%2B" );
     data = data.replace(/\&/g,  "%26" );
     var  queryString =  "retCode="  + retCode +  "&data="  + data;
     var  url =  "backSealServlet" //使用URL向后台傳值
     xmlHttp.open( "POST" ,url, false );
     xmlHttp.onreadystatechange = handleStateChange;
     xmlHttp.setRequestHeader( "Content-Type" "application/x-www-form-urlencoded" );
     xmlHttp.send(queryString);
}
 
 
【推薦】在 javascript 中加入    
Java代碼   收藏代碼
  1. function URLencode(sStr)   
  2. {  
  3.   
  4.     return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');  
  5.   
  6. }  


對字符串進行處理.如: 
Java代碼   收藏代碼
  1. var str=URLencode("abc+");  

或者: 
Java代碼   收藏代碼
  1. dst_fname=dst_fname.replaceAll("\\+","%20");  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM