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?

Original source