Send JSON with AJAX
ajax, javascript, json
Solution
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);
}
Problem
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?