2014-02-14 4 views
0

Я не решаюсь спросить, но пока не нашел решения. Я всегда думал, это может быть просто глупая ошибка, но я не могу ее найти.jQuery ajax post: PHP get no content

У меня есть JQuery 2.1 AJAX POST на мой PHP сервер:

$.ajax({ 
    url: "http://my-server.com/post-example.php", 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    data: JSON.stringify({ foo: "bar" }), 
    success: function(data) { 
    console.log("SUCCESS"); 
    }, 
}); 

Safari говорит мне в консоли, что данные запроса правильно и был послан. При попытке доступа foo внутри PHP, все пусто:

var_dump($_POST); // array(0) 
$foo = file_get_contents("php://input"); 
var_dump($foo); // string(0) 

Когда я пытаюсь POST с завитком, я получаю результаты в php://input:

curl -v -X POST -H "Content-Type: application/json" -d '{"foot":"bar"}' http://www.my-server.de/post-example.php 

// on PHP side 
var_dump($_POST); // array(0) 
$foo = file_get_contents("php://input"); 
var_dump($foo); // string(13) "{"foo":"bar"}" 

Я не могу найти причину. Возможно, что-то не так в моей конфигурации PHP, но я уже установил always_populate_raw_post_data = On в своем php.ini.

Я также пробовал без contentType и dataType, такой же эффект.

+1

такой же вопрос? http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascript – Nostalgie

+0

К сожалению нет. Я могу добраться до сервера, и я получаю все выходные данные, но запросы vars из PHP пустые. – 23tux

+0

Хм зачем строчить? Вы можете просто разместить данные: {foo: "bar"}, не знаю, будет ли это иметь значение. – Esko

ответ

1

Вы отправляете строку, а не JSON, исправить это следующим образом:

$.ajax({ 
    url: "res.php", 
    type: "POST", 
    data: { foo: "bar" }, 
    success: function(result) { 
     console.log(result); 
    } 
}); 

print_r($_POST) вернулся в этом:

Array 
(
    [foo] => bar 
) 
не
+0

Спасибо за ваш ответ. Я попробовал это без 'dataType' и с и без stringify. К сожалению, я все еще не получаю никаких результатов в PHP при просмотре 'file_get_contents (« php: // input »)'. Любая другая идея? – 23tux

+0

Отредактировал мой ответ, протестировал и работал идеально. Проверьте это –