Javascript 在jquery mobile中未正确发送post方法数据
您好,我想使用post方法将数据发送到服务器,但不使用ajax我发送的数据如下:Javascript 在jquery mobile中未正确发送post方法数据,javascript,jquery,jquery-ui,jquery-mobile,Javascript,Jquery,Jquery Ui,Jquery Mobile,您好,我想使用post方法将数据发送到服务器,但不使用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 final
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);
post_to_url(encodedURL,parameters);
}
else
{
alert("You must enter a username and password", function() {});
$("#submitButton").removeAttr("disabled");
}
}
我的post_to_url函数如下所示:
function post_to_url(url, params) {
var form = document.createElement('form');
form.action = url;
form.method = 'POST';
for (var i in params)
{
if (params.hasOwnProperty(i))
{
var input = document.createElement('input');
input.type = 'hidden';
input.name = i;
input.value = params[i];
form.appendChild(input);
}
}
form.submit();
}
但从服务器上我得到的响应不是当你们传递错误的参数时出现的对象。但是,当我用ajax ten传递相同的参数时,它工作得非常好。为什么会这样
我的url格式是:http://myDomain/Ri_logon5.asp?requestString=
参数格式如下:manish | ^info1234 | ^X | ^11111985 | ^1.0|^|$
如果我在rest客户机中输入url并传递参数,那么它会给出正确的响应。鉴于您希望使用POST而不是GET,您应该更改您的代码,使其不传递多个POST值。您想要的是只发布requestString。您还应该将url更改为:myDomain/Ri_logon5.asp
function post_to_url(url, params) {
var form = document.createElement('form');
form.action = url;
form.method = 'POST';
// Change this to fetch the arguments and build the string accordingly
var postString = 'manish|^info1234|^|^X|^11111985|^1.0|^|$';
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'requestString';
input.value = postString
form.appendChild(input);
form.submit();
}
我在ajax中使用了以下方法,效果很好:
$.ajax({
type: "POST",
contentType:"application/x-www-form-urlencoded; charset=UTF-8",
url: clientDetailURL,
data: finalclientDetailParam
}).done(function( msg1 )
{
var clientDetailResponse = msg1;
console.log("Client detail response is:"+clientDetailResponse);
});
这里clientDetailURL是:http://myDomain/Ri_logon5.asp?requestString=
最后一个客户端详细参数是:manish | ^info1234 | ^X | ^11111985 | ^1.0|^|$
对于这个ajax,它可以很好地工作,但对于没有ajax的POST方法,情况却不一样。这完全令人困惑。在上面的代码中,我有一个字符串名称作为参数。我只想用post方法发送这个字符串。若我将这个字符串作为正文发送到REST客户机工具中,那个么REST客户机将给我正确的结果。我认为错误是因为名称-值对。不,我想使用post发送数据。当我在REST客户机上测试它时,我也会选择方法作为postCould,然后您会给出使用您的代码发布的内容吗?我看到您正在使用input.name=I;但请记住,我只是一个整数,在服务器端,您通过使用$_POST[“NAME-VALUE-FROM-POST-data”]获取数据我想使用post=>manish^^info1234^^^X^^11111985^^1.0^^^来发布这个字符串,如果我使用URL作为参数,使用manish^^info1234^^X^^11111985^^1.0^^^作为REST客户端中的post,那么它会给我正确的输出。感谢您的回复。但现在服务器获取的值为:requestString=manish%7C%5eInfo 1234%7C%5EX%。。。。表示特殊字符以其他格式显示