2013-12-13 7 views
0

Я попыталсяПочему не срабатывает Post Post?

JAVASCRIPT

str_objects = "some multiline text"; 

xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("POST", "127.0.0.1/index.php", false); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("str_objects="+encodeURIComponent(str_objects)); 

PHP

$str_map = $_POST["str_objects"]; 

file_put_contents("map.txt", $str_map); 

и:

JAVASCRIPT

str_objects = "some multiline text"; 

xmlhttp=new XMLHttpRequest(); 

xmlhttp.open("POST", "127.0.0.1/index.php", false); 

xmlhttp.send(str_objects); 

PHP

$str_map = file_get_contents('php://input'); 
file_put_contents("map.txt", $str_map); 

Выходной файл "map.txt" в обоих случаях остается пустым.

+2

Что не работает? Что вы ожидаете? Что происходит? –

+0

echo $ str_map должен эхо-многострочный текст из переменной JS str_objects – user3100031

+1

использовать инструменты разработчика в хроме, переходить в сети .. делать что-то и проверять, действительно ли вы передаете переменную .. –

ответ

2

Вы не передаете никаких пост-переменных, поэтому $ _POST пуст?

Попробуйте следующее:

xmlhttp.open("POST","ajax_test.asp",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("fname=Henry&lname=Ford"); 

Подробнее:

http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

+0

Но я передаю переменные str_objects, я думал, что Array Post будет содержать строки из моего многострочного текста. – user3100031

+0

См. Мое edit @ user3100031 –

+0

Возможно, было бы полезно помочь OP с их конкретной проблемой. –

0

HTTP POST данных имеет определенный формат. Вы даете имена переменных и их содержимое.

вы можете заменить последнюю строку в JavaScript с:

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("str_objects="+encodeURIComponent(str_obejects)); 

, то вы должны получить данные в вашем PHP скрипт.

В первой строке мы сообщим ему отправить заголовок с данными, сообщающими серверу, что это пара значений ключа с urlencoded. В противном случае сервер не будет знать, как его интерпретировать.

В строке отправки мы отправляем сами данные, используя функцию encodeURIComponent, чтобы правильно кодировать контент для передачи, указав его имя str_objects.

На стороне PHP ваших данные будут храниться в $_POST["str_objects"]

0

Вы публикуете исходные данные, не urlencoded или данные многочастной формы, таким образом, $_POST не будет заполнен.

Вы можете:

  • Изменить часть JavaScript для отправки urlencoded или многокомпонентные данные
  • Используйте file_get_contents('php://input'), чтобы получить исходные данные

Последнее, вероятно, предпочтительнее в вашей ситуации.

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