javascript - $.post 和 $.ajax 帖子工作完美但不简单

  显示原文与译文双语对照的内容
0 0

我在没有ajax的情况下以post格式发送数据时遇到的所有问题。 我的网址为:

intranetUrl+"customer/Ri_logon5.asp?requestString=";

要发送参数,请执行以下操作:

'manish|^info1234|^|^X|^11111985|^1.0|^|$'; 

我使用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(encodedURL, parameters, 
 function(data) {
 alert("Data Loaded:" + data);
 });
}
else
{
 alert("You must enter a username and password", function() {});
 $("#submitButton").removeAttr("disabled");
}

}

我得到了正确的结果。

当我使用它时:

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);
 $.ajax({
 type:"POST",
 contentType:"application/x-www-form-urlencoded; charset=UTF-8",
 url: encodedURL,
 data: parameters
 }).done(function(msg)
 {
 response = msg
 console.log("repon s???????????????e::>::"+response);
 });
}
else
{
 alert("You must enter a username and password", function() {});
 $("#submitButton").removeAttr("disabled");
}
}

这里还有正确的结果,但是当我使用下面没有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';
var postParam = encodeURIComponent(params);
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'requestString=';
input.value = postParam;
document.body.appendChild(input);
form.appendChild(input); 
form.submit();
}

但是使用这个最后的代码我没有得到期望的输出。 这是什么错误建议有建议。

现在我检查了服务器得到的输出,它得到了如下结果:

requestString%3D=manish%25257C%25255Einfo1234%25257C.....

意思是特殊字符没有编码/解码 well.But 我已经把它们编码在 上面 中了?

时间:原作者:2个回答

0 0

第三种方法有几个问题:

  • 你不应该将整个URI设置为操作,而是 intranetUrl+"customer/Ri_logon5.asp"

  • 你不应该将输入字段的值设置为URIEncoded字符串。 让表单提交完成编码。

  • 它离开页面,因为它是 form.submit();的正常 comportment

  • 提交前应将表单添加到页面中: document.body.appendChild(form);

前两点意味着你应该调用

var finalStr = u+encodeURIComponent("|^")+p+encodeURIComponent("|^")+encodeURIComponent("|^")+"X"+encodeURIComponent("|^")+d+encodeURIComponent("|^")+"1.0"+encodeURIComponent("|^|$");
post_to_url(intranetUrl+"customer/Ri_logon5.asp", finalStr);
原作者:
...