Как отправить JSON на PHP через POST?
Как-то так:
js:var someObj = {a:1,b:2};
var xhr = new XMLHttpRequest();			
xhr.open('POST', 'scratch.php');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');			
xhr.send('param=' + JSON.stringify(someObj));
xhr.onreadystatechange = function()
{
	if (this.readyState == 4) 
	{
		if (this.status == 200)
		{
			console.log(xhr.responseText);
		}
		else
		{
			console.log('ajax error');
		}
	}
};
php:$param = json_decode($_REQUEST["param"]);
$result = "Результат: a = ".$param->a."; b = ".$param->b;
die($result);
jquery раскладывает json в обычный post запрос: key=value&ke2=value2
А вы просто объект отправляете в нативном варианте, а туда надо отправлять строку как выше или же JSON сформированную строку(на php через php//input разбирать).