ajaxblackberryxmlhttprequestblackberry-playbookblackberry-webworks

WebWorks AJAX Cross domain request


I'm working on a playbook app with webworks sdk. I'm trying to make an http request (method: post) by sending AND recieving data. I can get the response from server, but the server can't get the $POST data, when I try to display $_POST['apiKey'], nothing apears, I checked my code 100 times, checked my config.xml for uri, can't find the error.

TL;DR: can't send but can receive data.

My PHP Server code:

echo "passed key is: ".$_POST["apiKey"]; // Nothing apears
echo "<br>";

if(md5($_SESSION['private_key'])===$_POST["apiKey"]){

}

else{
    echo "Invalid API Key"; // Always getting this response on client app
    exit();
}
?>

My JS Client code:

function httpRequest(){
    var key="a984a4474cff54d8468a296edf3af65b";
document.getElementById("status").innerHTML="Reaching server...";
//////////////////////////////////////
var xdr = getXDomainRequest();
xdr.onload = function() {
    document.getElementById("status").innerHTML=xdr.responseText;
}

xdr.open("POST", "http://mydomain/index.php");
xdr.send("apiKey="+key);

}


Solved: When using POST method you should define the request header:

xdr.open("POST", "http://mydomain.com/index.php");
xdr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // with this line
xdr.send("apiKey="+key);

Solution

  • Solved: When using POST method you should define the request header:

    xdr.open("POST", "http://mydomain.com/index.php");
    xdr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // with this line
    xdr.send("apiKey="+key);