[英]send data using post without ajax
我想在不使用ajax的情況下以post方法發送數據,因為我想為blackberrry version5及更低版本開發此應用程序。 黑莓不支持ajax。
我使用以下方式發送數據:
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);
});
那么為什么不需要在服務器端解碼字符串呢?
您必須在服務器端解碼URL。 就像在Java中一樣,您可以使用
String result = URLDecoder.decode(url, "UTF-8");
CGI參數始終以key1=value1&key2=value2...
,其中,如果鍵和值包含任何特殊字符,則它們都可以使用URI編碼。
當您這樣做時:
input.name = 'requestString=';
input.value = params;
您將生成一個單個的requestString
鍵,並且params
已經存在的任何特殊字符都必須進行URI編碼。 這可能最終會使您的值被雙重編碼 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.