Обработка данных из динамически сгенерированной формы

0

Я думал о создании чего-то, что генерирует много форм динамически, а затем с помощью jquery обрабатывать их представление.

Поэтому я генерирую форму, используя php, используя что-то вроде этого.

while(some condition) {
    echo "<form method=post action=specific_url.php name=some_form_name>";
    echo "<input type=text>";
    echo "<input type=submit>";
    echo "</form>";
}

Ну, это всего лишь скелет. Основная проблема заключается в том, как я должен указывать /id элементы формы, чтобы я мог однозначно идентифицировать каждую форму во время ее отправки и отправки, а использование может извлекать данные на странице specific_url без каких-либо проблем.

Прямая аналогия этой функции, которую я могу думать на вершине моей головы, - это сообщения в facebook, где у каждого сообщения есть поле комментариев.

ОБНОВИТЬ

Наверное, я не совсем понял вопрос. Извини за это. Позвольте мне перефразировать это.

Так что до сих пор у меня есть эти динамически сгенерированные формы. Теперь предположим, что пользователь пишет в одном из текстовых полей и нажимает кнопку отправки.

В этот момент jquery должен взять под свой контроль. Отправьте данные конкретной формы в URL-адрес. Получите результат и сделайте что-нибудь.

Поэтому, в конце концов, я должен был бы сделать что-то подобное

$(some_selector).submit(function(e) {
    e.preventDefault();
    $.post('specific_url.php',$(some_selector).serialize(),function(data) {
        // some stuff
    });
});

Здесь "some_selector" - это селектор, который активируется при отправке определенной формы и последующей отправке этих данных формы.

  • 0
    Хорошо, если вы следуете логике комментариев FB, форма прикрепляется к сообщению. Само сообщение, безусловно, уже имеет идею, поэтому в форме комментария можно использовать этот идентификатор. Вы можете использовать идентификатор сообщения для добавления префикса к идентификатору вашей формы.
Теги:
dynamicform

2 ответа

0

Это требование, чтобы атрибут id элемента был уникальным, а не атрибутом name.

Также возможно использовать массивы элементов, например:

<input name="comment[]" type=text>
<input name="comment[]" type=text>
<input name="comment[]" type=text>.

На вашем PHP. значение $ _POST ['comment'] будет отправлено как массив.

Если вы хотите однозначно идентифицировать каждый комментарий в своем PHP-коде, вы будете вынуждены переименовать их однозначно.

<input name="comment1" type=text>
<input name="comment2" type=text>
<input name="comment3" type=text>

Поскольку вы создаете форму с помощью PHP, это будет легко отслеживать имя, которое должно быть сгенерировано.

Если у вас несколько форм, у вас есть свободное владение, что-то вроде. Нет необходимости в имени для формы. Однако, чтобы определить, где на странице находится форма, поместите скрытое поле.

while(some condition) {
    echo "<form method=post action=specific_url.php";
    echo "<input name='position_in_page' type='hidden' value='$somevalue'>";
    echo "<input name='comment' type='text'>";
    echo "<input type='submit'>";
    echo "</form>";
}
0

Вы можете использовать скрытый элемент формы и установить его значение для id для формы.

<input type="hidden" name="form_id" value="1">

Таким образом, вы можете получить доступ к form_id, как и любое другое значение формы после его отправки. Теперь я смотрю на источник в facebook, и я вижу несколько скрытых элементов формы рядом с полями комментариев

  • 0
    Вы, вероятно, не найдете ни одного. Я сомневаюсь, что вы даже найдете тег <form>. Fb использует гораздо более умные реализации: скрытые поля старые, но простые.
  • 0
    Как я уже сказал, я уже нашел несколько скрытых элементов формы на Facebook. Я смотрю на них сейчас. Даже Facebook не слишком красив для скрытых элементов формы
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню