LINUX.ORG.RU

form: отсылать только измененные поля


0

0

Имеем форму, method="post".
Полей в форме много, отсылать их все не хочется, хочется только измененные. Вопрос: как?

Что приходило на ум:
1. Убрать форму, самому формировать URL только с нужными полями.
Но: хочется всё же отправлять через форму, post-ом, без ужасных длинных URL-ов.

2. Перед отправкой disable-ить ненужные поля.
Но: моргание полей при отправке выглядит не очень хорошо. Наверное, можно это решить стилями, но выглядит как-то грязновато.

3. В невидимом div-е динамически формировать новую форму и делать submit уже ей.
Но: это уж совсем в случае отчаяния :)

Вот если бы можно было сделать form.elements[xxx]._submit_this_element_ = false;
Пока ничего такого найти не удалось.
Какой же самый правильный способ не отправлять данные?

★★

Сделай запрос сам, закодируй его для отправки через POST и кинь всё это дело через AJAX на сервер; либо делай другую форму со скрытыми полями (тут даже невидимый див не нужен).

roy ★★★★★
()

по протоколу HTTP в формах отправляются только не задизабленные поля, поэтому либо дизаблить перед отправкой, либо отправлять целиком.

Кстати странный вопрос, не в ручную же вы все это отправляете, зачем вам ее сокращать? Либо она у вас перегружена.

anonymous
()
Ответ на: комментарий от roy

Про AJAX думал, как про приемлемый вариант в случае, если штатного ничего нет. Про скрытые поля не подумал, спасибо. Но суть одна - динамическое формирование html-я... не очень мне это нравится.

SOmni ★★
() автор топика
Ответ на: комментарий от anonymous

> по протоколу HTTP в формах отправляются только не задизабленные поля
Как я и написал, disable вызывает неприятный визуальный эффект перед отправкой.

> зачем вам ее сокращать
Ну допустим есть 20 полей, изменили 2. Зачем слать всё остальное?

SOmni ★★
() автор топика
Ответ на: комментарий от SOmni

В случае AJAX никакого динамического формирования HTML не надо делать.

На самом деле мне вообще не совсем понятна ваша задумка с практической точки зрения... разве что значения в форме очень большие...

Как вариант, можно сначала на странице отметить, какие поля будут редактироваться, отправить запрос, и сервер вернёт форму только с нужными полями. JavaScript ведь не у всех может быть.

roy ★★★★★
()
Ответ на: комментарий от roy

> В случае AJAX никакого динамического формирования HTML не надо делать.
Не спорю. Правда, надо заморачиваться с собственно AJAX-ом. Знаю, что не сложно, рассмаотриваю, как наиболее вероятный вариант.

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

>можно сначала на странице отметить, какие поля будут редактироваться, отправить запрос, и сервер вернёт форму только с нужными полями
Юзабилити стремится к 0 :)

SOmni ★★
() автор топика

Создать пустую форму, и перед отправкой джаваскриптом добавить в неё нужные поля.

ovax ★★★
()
Ответ на: комментарий от SOmni

> Ну допустим есть 20 полей, изменили 2. Зачем слать всё остальное?

lol. Экономия на спичках?

boombick ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.