Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   отправка динамической формы на сервер (https://javascript.ru/forum/dom-window/68170-otpravka-dinamicheskojj-formy-na-server.html)

gvv 30.03.2017 12:32

отправка динамической формы на сервер
 
Добрый день! Подскажите пожалуйста как отправить данные формы, созданной в JS, на сервер?

Пример:
// form.html (создание формы)

<body></body>
<script>

var frm = document.createElement('form');
frm.method = "post";
frm.action = "form.php";
document.body.appendChild(frm);

var inp = [];

var inp[0] = document.createElement('input');
inp[0].name = "inp_0";
inp[0].value = "value";
frm.appendChild(inp[0]);

var inp[1] = document.createElement('input');
inp[1].name = "inp_1";
inp[1].type = "submit";
frm.appendChild(inp[1]);

</script>

// form.php (получение данных из формы)
<?php
for ($i=0; $i<count($_REQUEST); $i++)
{
echo("REQUEST[$i] = $_REQUEST[$i]<br>");
}
?>
------------------------------
в php-файле массив $_REQUEST пустой (т.е. в браузере получается следующая строка: "REQUEST = " вместо желаемой "REQUEST = value". подскажите пожалуйста, где ошибка?

laimas 30.03.2017 12:52

Потому, что это

for ($i=0; $i<count($_REQUEST); $i++)
{
echo("REQUEST[$i] = $_REQUEST[$i]<br>");
}

полнейшая чушь. Данные отправленные формой можно и в $_REQUEST забрать, как $_REQUEST['inp_1'], а можно и нужно в $_POST['inp_1'], коим методом они и были отправлены.

gvv 30.03.2017 14:00

Действительно, если поставить $_POST вместо $_REQUEST и по отдельности (не массивом $_POST[$i], а к каждому элементу отдельно $_POST['inp_1'], $_POST['inp_2'], $_POST['inp_3'], ...) - все работает. Спасибо!

laimas 30.03.2017 14:38

Можно и циклом, но перебором не по индексу, которых нет в массиве, а по ключам foreach($_POST as $key=>$value), если ключи не ради их наличия созданы.


Часовой пояс GMT +3, время: 18:11.