sunshine
管理员
管理员
  • 最后登录2023-10-30
  • 发帖数170
  • 社区居民
阅读:10076回复:0

Ajax Post数据时加号(+)变空格的解决办法

楼主#
更多 发布于:2016-08-31 21:09
(ajax在进行参数传递时,平时没有遇到值中包括+号或者&号的内容,所以,一直没有发现这个问题。今天 ,同事将一个base64编码的值在进行传递后,发现值有后缺失; 后来才发现原因,ajax在传递参数过程中,会将+号与&替换成空格,这样值在传递后,就发生了改变;下面是解决加号变空格的方法)

采用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");  //替换所有的+号,为%2B
   data = data.replace(/\&/g, "%26");  //替换所有的&号,为%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 中加入    

  1. function URLencode(sStr)  
  2. {  
  3.  
  4.    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');  
  5.  
  6. }  
对字符串进行处理.如:
  1. var str=URLencode("abc+");  
或者:
  1. dst_fname=dst_fname.replaceAll("\\+","%20");  
转自:http://www.cnblogs.com/feilong3540717/archive/2012/02/14/2350965.html

最新喜欢:

我们都爱梁小八我们都爱梁小...
游客


返回顶部

公众号

公众号