Azevedo
Azevedo

Reputation: 2189

$.post not posting properly

I have this function which performs an ajax POST:

function consultaruserID(){
    if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
        } else { // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

var userID = document.getElementById('userID').value;
var captcha = document.getElementById('captcha').value;
var token = encodeURIComponent(cToken);
    var params = "userID="+userID + "&captcha="+captcha + "&token="+token;


    xmlhttp.open('POST','/sys/getdata.php',false);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(params);


    alert (xmlhttp.responseText);

}

Note that the string token is about 2000 in length and involves some special chars. Hence I used encodeURIComponent(cToken);

getdata.php process all the data and return a string. Works 100%.

Now, using the code below returns SUCCESS after posting but it won't bring me the string expected from getdata.php.

$.post("/sys/getdata.php",
    {userID: $('#userID').val(),
     captcha: $('#captcha').val(),
     token: encodeURIComponent(cToken)
    },
    function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
    }
);

On getdata.php I debugged the $_POST coming from the ajax of both methods. Both methods seems to be posting it properly. However the fucntion (which isn't mine) that proccess the token is somehow rejecting it from ajax.

Am I missing something here?

Sample of cToken:

var cToken='RadStyleSheetManager1_TSSM=&RadScriptManager1_TSM=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3a33363de7-7c08-435e-ab35-682b2ed2c688%3aea597d4b%3ab25378d2%3bTelerik.Web.UI%3aen-US%3a4701e229-f1c8-4ec4-9c40-b2d233d95d5d%3a16e4e7cd%3af7645509%3a22a6274a%3aed16cbdc%3a11e117d7&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKLTc1OTk5NDIwOA8WAh4IcHJldkdVSUQFJDlkYWRiODRjLWYyN2YtNDA2Yi04MjE4LWM3MGI4NzY4MmI1NxYCAgMPZBYCAgUPFCsAAw8WBh4FV2lkdGgbAAAAAADAckABAAAAHgZIZWlnaHQbAAAAAADAUkABAAAAHgRfIVNCAoADZBYCHgtDdXJyZW50R3VpZAUkOWRhZGI4NGMtZjI3Zi00MDZiLTgyMTgtYzcwYjg3NjgyYjU3FCsAA2RkFgIeCk1pblRpbWVvdXQCAxYCAgEPZBYIZg9kFgJmD2QWBmYPDxYKHwIbAAAAAAAASUABAAAAHwEbAAAAAACAZkABAAAAHghDc3NDbGFzc2UeCEltYWdlVXJsBVN%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPXJjYSZndWlkPTlkYWRiODRjLWYyN2YtNDA2Yi04MjE4LWM3MGI4NzY4MmI1Nx8DAoIDZGQCAQ8PFgIeBFRleHQFEUdlcmFyIG5vdmEgaW1hZ2VtZGQCAg8WBB4JaW5uZXJodG1sBQVPdXZpch4EaHJlZgVXfi9UZWxlcmlrLldlYi5VSS5XZWJSZXNvdXJjZS5heGQ%2FdHlwZT1jYWgmYW1wO2d1aWQ9OWRhZGI4NGMtZjI3Zi00MDZiLTgyMTgtYzcwYjg3NjgyYjU3ZAIBDw8WCh8CGwAAAAAAAElAAQAAAB8BGwAAAAAAgGZAAQAAAB8GZR8HBVN%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPXJjYSZndWlkPTlkYWRiODRjLWYyN2YtNDA2Yi04MjE4LWM3MGI4NzY4MmI1Nx8DAoIDZGQCAg8WBh8JBQVPdXZpch8KBVd%2BL1RlbGVyaWsuV2ViLlVJLldlYlJlc291cmNlLmF4ZD90eXBlPWNhaCZhbXA7Z3VpZD05ZGFkYjg0Yy1mMjdmLTQwNmItODIxOC1jNzBiODc2ODJiNTceB1Zpc2libGVnZAIDD2QWBGYPDxYIHwZlHglBY2Nlc3NLZXllHghUYWJJbmRleAEAAB8DAgJkZAIBDw8WBh8GZR8IBRxUeXBlIHRoZSBjb2RlIGZyb20gdGhlIGltYWdlHwMCAmRkGAIFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtSYWRDYXB0Y2hhMQULUmFkQ2FwdGNoYTEPFCsAAgUkOWRhZGI4NGMtZjI3Zi00MDZiLTgyMTgtYzcwYjg3NjgyYjU3BgAAAAAAAAAAZC71hndqclnXtz26igXAh8hMTN8v1xbnYlEz5BpnTD2e&__EVENTVALIDATION=%2FwEWAgKQq574CQLYv5ykDAZWk768pXDUic2zwz0szJjtC6%2ByEIHnfkVFizDz0zTL&RadCaptcha1_ClientState=&RadCaptcha1%24CaptchaTextBox=';

Upvotes: 0

Views: 63

Answers (2)

Mike Brant
Mike Brant

Reputation: 71384

You shouldn't URI encode cToken. jQuery will automatically apply URI encoding when it converts your object literal into a query string.

Upvotes: 1

Wilmer
Wilmer

Reputation: 2511

Your token seems to contain extra parameters which are not being passed correctly, try the passing the data string:

var userID = document.getElementById('userID').value;
var captcha = document.getElementById('captcha').value;
var token = encodeURIComponent(cToken);
var params = "userID="+userID + "&captcha="+captcha + "&token="+token;

$.post("/sys/getdata.php",
    params,
    function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
    }
);

Upvotes: 0

Related Questions