我想在不使用 ajax 的情况下以 post 方法发送数据,因为我想为 blackberry 版本 5 及以下版本开发此应用程序。而且黑莓不支持ajax。
我使用 post 发送数据:
function handleLogin() {
var form = $("#loginForm");
var u = $("#username", form).val();
var p = $("#password", form).val();
var d = $("#dob", form).val();
if (u != '' && p != '') {
var finalStr = u + encodeURIComponent("|^") + p + encodeURIComponent("|^") + encodeURIComponent("|^") + "X" + encodeURIComponent("|^") + d + encodeURIComponent("|^") + "1.0" + encodeURIComponent("|^|$");
var encodedURL = encodeURI(intranetUrl + "customer/Ri_logon5.asp?requestString=");
var parameters = decodeURIComponent(finalStr);
alert("param:" + parameters);
post_to_url(intranetUrl + "customer/Ri_logon5.asp", finalStr);
} else {
alert("You must enter a username and password", function () {});
$("#submitButton").removeAttr("disabled");
}
}
function post_to_url(url, params) {
var form = document.createElement('form');
form.action = url;
form.method = 'POST';
alert("%%%%%%before" + params);
var postParam = encodeURIComponent(params);
postParam = decodeURIComponent(postParam);
alert("%%%%%%" + postParam);
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'requestString=';
input.value = params;
document.body.appendChild(input);
form.appendChild(input);
form.submit();
}
在 post_to_url() 函数的两个警报中,我都可以读取参数。manish|^info1234|^|^X|^11111985|^1.0|^|$
但是在服务器端,他们接收参数requestString%3D=manish%7C%5Einfo1234%7c%5E%7C%5EX%.....
意味着特殊字符在服务器端没有正确接收。但在警报中,它们显示正确。为什么会这样?任何帮助将不胜感激。
如果我使用 ajax 作为;
$.post(encodedURL, parameters ,
function(data) {
alert("Data Loaded: " + data);
});
那么为什么服务器端不需要解码字符串呢?