分析一下Ajax傳遞數據的格式與Javascript的語法不難發現:
1. "+"號:JavaScript解析爲字符串鏈接符,因此服務器端接收數據時"+"會丟失。
2. "&":JavaScript解析爲變量鏈接符,因此服務器端接收數據時&符號之後的數據都會丟失。javascript
解決辦法也至關簡單,只須要爲+與&符號編碼便可:java
//使用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 中加入
服務器
function URLencode(sStr) { return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F'); }
對字符串進行處理.如:
app
var str=URLencode("abc+");
或者:
post
dst_fname=dst_fname.replaceAll("\\+","%20");