ASP.NET MVC Forms с поддержкой AJAX и традиционной POST - PullRequest
2 голосов
/ 26 февраля 2010

У меня есть форма, которую я в настоящее время перечисляю с некоторыми функциями Javascript, а затем публикую ее с помощью jQuery .ajax () в действии контроллера MVC. У меня есть несколько вопросов о моих опциях, если я хочу добавить традиционную (без javascript) поддержку для публикации этой формы.

1) Дело в том, что у меня есть некоторые данные, которых нет в полях, но это просто текст в div. Поскольку в настоящее время я публикую сообщения с помощью AJAX, я могу получить содержимое этих элементов по их идентификаторам перед публикацией и включить их в сообщение. Я предполагаю, что эта информация будет отсутствовать в традиционном POST.

Одна из идей состоит в том, чтобы сделать <input> и для этих элементов, но скрыть их на странице. А затем используйте их в POST.

2) Если я решу использовать только пост AJAX, могу ли я полностью избавиться от формы?

3) Учитывая, что я остаюсь с сообщением AJAX, какой формат вы предлагаете использовать для публикации значений? JSON, разделенный запятыми (проблематично для сложных данных), что-то еще?

4) Обычно вы поддерживаете оба способа? Потому что, если я посмотрю на мои формы прямо сейчас, они используют тонну функциональности пользовательского интерфейса jQuery и jQuery, и это было бы излишним для реализации без JavaScript. Насколько вероятно, что у пользователей не будет включен JS, и можно ли просто сказать «JS требуется»?

Для этого конкретного случая я создаю собственное приложение по требованию, которое не будет ориентировано на Интернет (по крайней мере, пока), поэтому у меня есть возможность сказать, что JS требуется.

ти

Ответы [ 2 ]

2 голосов
/ 26 февраля 2010

Если вы хотите пойти по пути поддержания работоспособного сайта без javascript, то я бы посоветовал вам начать с создания сайта, работающего без него, а затем использовать javascript, чтобы изменить этот интерфейс так, как вам действительно нужно, с включенным javascript , Это повлечет за собой начало со всех входных данных, содержащихся в элементах input, затем замену этих элементов с использованием javascript на элементы div - или, более реалистично, удаление inputs и показ ранее существующих элементов div.

Не вижу необходимости избавляться от формы даже при использовании AJAX, хотя технически нет причин иметь ее. Однако я хотел бы сохранить одну форму, а мой метод submit вытащить действие из тега form, чтобы мне не нужно было кодировать его непосредственно в javascript. Возможно, вы обнаружите, что это облегчает совместное использование JavaScript между вашими различными формами.

Я всегда сериализую для запроса параметров, как обычно в форме. Самый простой способ сделать это с помощью метода jQuery serialize, но он будет работать только на входах. Вы также можете создать хеш (пары ключ-значение в объекте) и указать его в качестве параметра данных для вашего AJAX. Он автоматически сериализуется для запроса параметров. Использование чего-либо еще потребует десериализации с использованием собственного кода, а не кода привязки модели в MVC.

В общедоступных веб-приложениях я стараюсь, чтобы интерфейс работал как для браузеров с поддержкой javascript, так и для браузеров с отключенной поддержкой. Однако браузеры, не поддерживающие JavaScript, иногда не получают доступа к определенным функциям. Для внутренних приложений мне будет удобно требовать javascript, поскольку вы (или кто-то в вашей компании) имеете больший контроль над ним.

1 голос
/ 26 февраля 2010

Я бы поместил текст div в скрытые поля, иначе он не будет обработан традиционным POST.

Лично я бы не избавился от формы, что произойдет, если ваш JS по какой-то причине отключен / сломан? Даже если у пользователя включен JS, если (например) файл JS не загружается, ваша форма не сможет отправлять данные с помощью AJAX. Приобретите AJAX, но убедитесь, что вы можете вернуться к традиционной форме POST.

...