Решение Джеймса работает просто отлично, но если вы хотите отправлять данные с использованием типа контента application / json, вам придется обращаться к данным по-другому.
За то, что у вас на стороне сервера,
if(isset($_POST['jsonString']))
echo $_POST['jsonString'];
изменить это (как Джеймс):
xmlhttp.setRequestHeader("Content-type","application/json");
до
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ЕСЛИ ВЫ ХОТИТЕ ИСПОЛЬЗОВАТЬ тип контента application / json, то вы должны изменить способ доступа к нему на стороне сервера с помощью:
$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);
echo $json_object->action;