Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Выбрать все данные из формы


Автор: chiffa 17.8.2010, 12:22
Всем добрый день. У меня есть форма, поля который генерируются на лету. Аджаксом мне нужно переслать данные формы в ПХП-скрипт т.к. я не знаю название полей формы, могу ли я как то выбрать все поля подряд или получить весь "POST-массив" (или что то вроде). Заранее спасибо за ответ

Автор: Amphiluke 17.8.2010, 12:45
А почему нельзя дать полям имена? Хотя бы перед отправкой. smile
Кто их генерирует «на лету»?

Добавлено через 12 минут и 31 секунду
А, наверное, понял.
Если вы располагаете ссылкой на нужную форму, то у этой формы есть атрибут elements, который является массивом, содержащим все элементы формы. Доступ к атрибутам name и value так и осуществляется. Например: form.elements[0].name и form.elements[0].value, где form — ссылка на форму. Формируете строку POST-запроса из свойств name/value этих элементов и отсылаете AJAX'ом, как обычно.

Автор: chiffa 17.8.2010, 13:06
тоесть form это имя формы?

Автор: Amphiluke 17.8.2010, 13:18
Нет, в том примере это именно ссылка на объект формы.


Вот такой примерчик набросался.
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
    function sendForm(formid) {
        var aform = document.getElementById(formid);
        if (!aform) return false;
        var POST_str = encodeURIComponent(aform.elements[0].name) + "=" +
            encodeURIComponent(aform.elements[0].value).replace(/%20/g, "+");
        for (var i = 1; i < aform.elements.length; i++)
            POST_str += "&" + encodeURIComponent(aform.elements[i].name) + "=" +
                encodeURIComponent(aform.elements[i].value).replace(/%20/g, "+");
        var req = new XMLHttpRequest();
        req.onreadystatechange = function() {
            if (req.readyState == 4)
                if (req.status == 200)
                    alert(req.responseText);
        }
        req.open("POST", "php.php");
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.send(POST_str);
        return false;
    }
</script>
</head>

<body>
    <form action="php.php" method="post" id="aForm">
        <input type="text" name="f1" /><br />
        <input type="text" name="f2" /><br />
        <input type="text" name="f3" /><br />
        <p><a href="#" onclick="return sendForm('aForm');">Send!</a></p>
    </form>
</body>
</html>

Автор: bars80080 17.8.2010, 14:05
Цитата(chiffa @  17.8.2010,  12:22 Найти цитируемый пост)
У меня есть форма, поля который генерируются на лету. Аджаксом мне нужно переслать данные формы в ПХП-скрипт т.к. я не знаю название полей формы

сказки всё это. ты генерируешь форму, с таким же успехом можешь генерировать имена в обработчике

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)