AJAX против представления формы

Мы извлекаем данные с сервера и для этого. Если мы используем Struts, то мы можем вытащить либо путем отправки страницы, которая MVC Architecture, либо мы купим вызов AJAX но конвенции используют формы и дают ответ, но мы также сталкиваемся с трудностями, чтобы предоставить богатый опыт пользователей, поэтому мы нарушаем соглашение и начинаем использовать чрезмерный AJAX, так как мы должны делать баланс между двумя?

Ответ 1

Я лично считаю, что AJAX следует использовать для отображения обновлений, а форма представления должна выполняться через перезагрузку страницы. Рассуждая?

При отправке форм вы говорите, что приложение что-то делает. Пользователи, как правило, хотят чувствовать, что это было сделано. Когда страница не перезагружается, пользователям часто остается интересно: "Это работало?". Затем они должны проверить, чтобы убедиться, что они сделали правильно.

С другой стороны, когда вы показываете диаграмму или что-то еще, и пользователь говорит "отображать данные 2011 года... теперь данные 2012 года", например, они не "что-то делают" (создавая новые сущности, отправка писем и т.д.). Таким образом, AJAX может обеспечить приятный пользовательский интерфейс в этом случае. Страница перезагрузки будет раздражать здесь.

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

Конечно, это предпочтение. Некоторые из моих корпоративных приложений используют AJAX. Но это те приложения, которые сложнее поддерживать и отлаживать.;)

Ответ 2

Обычная старая форма представления HTML и причудливые формы ajax не являются взаимоисключающими.

Сначала сделайте обычную HTML-форму корректной. Затем добавьте javascript, чтобы захватить форму и отправить запрос ajax.

Контроллер и модель не волнует, поддерживает ли браузер пользователя (или включен) javascript. Представленное представление определяется тем, был ли вызов выполнен с помощью javascript или простой отправки формы. Это одна из сильных сторон шаблона MVC, а не ограничение.

Ответ 3

Я думаю, что выбор между ними несколько внутренне:

  • представление формы является синхронным и перезагружает страницу.

  • ajax-вызов является асинхронным и не перезагружает страницу.

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

Нет ничего, что позволяло бы вам использовать как можно больше аякс-вызовов или форм, так как в конечном итоге это зависит от вас.

Ответ 4

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

Ответ 5

В наше время практически нет случая использовать метод отправки формы HTML по умолчанию (кроме чистой ностальгии или, возможно, невежества).

Независимо от того, что происходит, у вас больше контроля над всем процессом в более сжатой кодовой базе с использованием AJAX. Но что более важно, мы просто так больше не делаем.

Рассматривать:

Когда форма HTML отправляет (старый стиль): (a) она собирает name= поля формы name= значения атрибута (они становятся именами переменных по умолчанию) (b) вместе с введенными пользователем данными в полях формы (которые становятся значениями переменной) и отправляет эти пары данных в файл PHP.

Точно такой же процесс может быть легко запрограммирован с использованием javascript/jQuery.

ОДНАКО, при отправке формы HTML в старом стиле страница меняется - поэтому, если вы хотите выполнить проверку полей, вы используете javascript/jQuery, чтобы врезаться в процесс отправки, таким образом:

$('myform#btnSubmit').click(function(){
    var some_fields_failed = false;
    //check form field values here, set: some_fields_failed = true
    if (some_fields_failed){
       return false; //halts the HTML Form Submit process and returns control to the user
    }
});

в этом случае вы уже используете большую часть конструкции AJAX, которая заменит процесс отправки HTML-формы.

Это простое введение в AJAX дает несколько веских причин использовать AJAX вместо процесса отправки формы HTML в старом стиле:

AJAX - мечта разработчика, потому что вы можете:

Обновление веб-страницы без перезагрузки страницы
Запрос данных с сервера - после загрузки страницы
Получать данные с сервера - после загрузки страницы
Отправить данные на сервер - в фоновом режиме


Обратите внимание, что вы можете написать ajax-код в чистом javascript, но значительно проще (гораздо менее типизировано, более согласованно) использовать библиотеку jQuery (javascript). Следовательно, все приведенные выше примеры используют jQuery. Чтобы включить jQuery в ваш проект, нужно всего лишь включить ссылку на библиотеку jQuery:

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
</head>

StackOverflow maven, Schabse Laks, создал простое учебное пособие по jQuery, которое стоит пройти (ВАЖНО: используйте стрелку вниз для перехода по страницам)