Как обработать состояние ошибки формы в jQuery Mobile и вернуть HTML? - PullRequest
6 голосов
/ 12 июля 2011

Каков наилучший способ обработки форм в jqm?

Например, предположим, что пользователь заполняет форму, а некоторые данные не проверяются.Он не обнаруживается при проверке JS, но вызывает некоторую бизнес-логику, означающую, что система не может продолжить работу.

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

В идеале, мне бы хотелось, чтобы я сказал jqm не переходить и не включать ответ в историю - скорее простопокажите это вместо того, что там есть.

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

Похоже, что должен быть лучший способ?

Спасибо

1 Ответ

2 голосов
/ 12 июля 2011

Хороший вопрос, и мне тоже было бы интересно узнать, что говорят другие. Что бы это ни стоило, в недавнем приложении (которое также должно было работать в автономном режиме) я пошел по вашему предложенному маршруту с моими формами:

  1. Запрещено действие отправки по умолчанию.
  2. Использовал ajax-вызов от кнопки, которая проверяет данные, прежде чем отправлять их в веб-службу или просто сохранять в локальной базе данных (в зависимости от флага состояния и от того, подключены мы или нет).
  3. Убедитесь, что все релевантные сообщения об успехе / неудаче возвращаются обратно с помощью обратного вызова submit, чтобы мы могли ...
  4. … обновить ту же html-страницу с результатами отправки пользователя.

Это хорошо работает, и пользователи счастливы. Тем не менее, это соответствует моему конкретному набору обстоятельств - я не хотел использовать какую-либо строку запроса / location.hash, потому что (a) jQM иногда сходил с ума с хешами и, (b) потенциально пользователь будет отключен (и нет веб-сервер означает отсутствие строки запроса). Ваш пробег может меняться, конечно.

РЕДАКТИРОВАТЬ: код для обновления страницы с сообщениями Для моего приложения я хотел, чтобы список сообщений появлялся на текущей странице, когда это необходимо, поэтому у меня есть пустой неупорядоченный список (messages) на соответствующей странице HTML, который, в свою очередь, находится внутри стилизованного элемента div (message-pane). Вот фрагмент кода, показывающий, как происходит обновление (обратите внимание на вызов refresh, который требуется в jQM). Вы можете вызвать такой код из вашего обработчика ajax:

var list = $("#messages");
list.append('<li>YOUR MESSAGE HERE</li>');
list.listview('refresh');
$("#message-pane").show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...