Is there anything special I have to do to a JSON object before I send it with AJAX? My code looks like this:
runAjax(JSON.stringify(data));
}
function runAjax(JSONstring)
{
ajax = getHTTPObject();
var params = "?data=" + JSONstring;
ajax.open("POST", "createtrip.php", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", params.length);
ajax.setRequestHeader("Connection", "close");
ajax.onreadystatechange = serverSpeaks;
ajax.send(params);
}
Right now the server is not receiving the data. I get null on the server side but the client side JSONString is set. Is there something I'm doing wrong?
You should pass through an encoder to send the data correctly. Of course you would first have to see that the variable "data" is well formed as "JSON".
other link encode/decode
You are sending data over POST, you don't need the '?'
character at the beginning of the params
variable, also I recommend you to encode the JSONString to avoid problems.
Note that you are missing the var
statement for the ajax
variable, this is declaring it globally (window.ajax) and I think that you don't need it globally...
function runAjax(JSONstring) {
var params = "data=" + encodeURIComponent(JSONstring),
ajax = getHTTPObject();
ajax.open("POST", "createtrip.php", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", params.length);
ajax.setRequestHeader("Connection", "close");
ajax.onreadystatechange = serverSpeaks;
ajax.send(params);
}
The server can deal with post body like name1=value&name2=value2.
If you are using PHP, you can receive the json string by:
$data = file_get_contents("php://input");