|
阅读:10077回复:0
Ajax Post数据时加号(+)变空格的解决办法
(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 中加入
|
|
最新喜欢: |