繁体   English   中英

$ .post和$ .ajax POST完美但不简单

[英]$.post and $.ajax POST works perfect but not simple post

大家好,我在没有ajax的情况下以jquery以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.....

表示特殊字符的编码/解码不正确。但是我在上面对它们进行了编码,那是什么问题呢?

第三种方式的一些问题:

  • 您不应将整个URI设置为操作,而只能将intranetUrl+"customer/Ri_logon5.asp"设置为操作

  • 您不应将输入字段的值设置为URIEncoded字符串。 离开表单提交进行编码。

  • 它离开页面,因为这是form.submit();的常规方式form.submit();

  • 您应该在提交document.body.appendChild(form);之前将表单添加到页面: 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM