采用Ajax傳遞數(shù)據(jù)時,通常會將數(shù)據(jù)整理為data=”var1=abc&var2=def”。而當(dāng)數(shù)據(jù)中存在加號(+)或是連接符(&)時,服務(wù)器端接收數(shù)據(jù)時會有部分?jǐn)?shù)據(jù)丟失現(xiàn)象。分析一下Ajax傳遞數(shù)據(jù)的格式與Javascript的語法不難發(fā)現(xiàn):
1. “+”號:JavaScript解析為字符串連接符,所以服務(wù)器端接收數(shù)據(jù)時”+”會丟失。
2. “&”:JavaScript解析為變量連接符,所以服務(wù)器端接收數(shù)據(jù)時&符號以后的數(shù)據(jù)都會丟失。
解決辦法也相當(dāng)簡單,只需要為+與&符號編碼即可:
function vchar(str) {
str = str.replace(/\+/g, “%2B”);
str = str.replace(/\&/g, “%26″);
return str;
}
var1 = “abc+kef”;
var2 = “abc&kef”;var1 = vchar(var1);
var2 = vchar(var2);alert(var1);
alert(var2);