2013-07-22 2 views
1

Я хочу использовать собственный javascript для отправки json-файла в php. Почему мой $ _POST из get-translation.php пуст?Отправка json с использованием встроенного javascript

var xmlhttp; 
json_data = JSON.stringify(a_data); 

if (window.XMLHttpRequest) 
{ 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{ 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xmlhttp.open("POST","get-translation.php",true); 
xmlhttp.setRequestHeader("Content-type","application/json"); 

xmlhttp.send(json_data); // json_data is simple json 
+0

Почему вы вызываете send() дважды? Работает ли get-translation.php так, как предполагалось? – Bart

+0

Я не видел, что я звонил дважды. $ _POST не возвращает ничего в get-translation.php – smotru

+1

$ _POST работает только для стандартного типа контента application/x-www-form-urlencoded, а не для приложения/json. Используйте '$ jsonData = json_decode (file_get_contents ('php: // input'));' – Bart

ответ

0

$ _POST работает только для типа содержимого по умолчанию application/x-www-form-urlencoded. Для любых других типов данных, включая JSON, вам необходимо проанализировать поток исходных данных.

file_get_contents('php://input') вернет необработанное тело запроса. Поскольку это JSON, вам нужно использовать json_decode для анализа данных json в ассоциативном массиве.

$jsonData = json_decode(file_get_contents('php://input')); 
0

Вам нужно сделать данные JSON строку:

json_data = JSON.stringify(json_data); 
+0

Я сделал это :), но не работал – smotru

Смежные вопросы