#coldfusion #jquery-mobile
#coldfusion #jquery-мобильный
Вопрос:
Я вбил себе в голову, что мобильным приложениям не нравятся отправки формы так же, как это делает html, поэтому я подумал, что мне лучше проверить работоспособность Stackoverflow.
Например, вместо <тип ввода=»отправить» …> , похоже, теперь я должен использовать <роль данных =»кнопка» …>
Вопрос: Могу ли я продолжать использовать <тип ввода=»отправить»…> для мобильных приложений?
Причина, по которой я спрашиваю, заключается в том, что страница действий имеет некоторую логику, например:
<cfif structKeyExists(form,"Save")>
Комментарии:
1. интересно то же самое и не нашли хорошей реализации / руководства с программной отправкой формы JQM.
2. Интересно. Вот документы по отправке формы: jquerymobile.com/demos/1.0rc1/docs/forms/forms-sample.html и документы по типу кнопок находятся здесь: jquerymobile.com/demos/1.0rc1/docs/buttons/buttons-types.html насколько я понимаю, у вас все в порядке с использованием типа ввода submit. Также в примечаниях к выпуску есть несколько лакомых кусочков: jquerymobile.com/blog/2011/09/29/jquery-mobile-1-0rc1-released
Ответ №1:
jQuery Mobile, по крайней мере, на момент написания этой статьи, по умолчанию отправляет формы через AJAX, используя метод, указанный в отправляемой форме. Отправленные сообщения по-прежнему будут отправляться на сервер в фоновом режиме, поэтому ColdFusion по-прежнему будет видеть переменные формы, которые передаются как обычно. Когда ответ будет сгенерирован, jQuery Mobile примет ответ и переведет представление на любой возвращенный HTML. В моем собственном тестировании вы также можете продолжать использовать обычную кнопку отправки. Если вы хотите отправить стандартную отправку, а не отправку AJAX, добавьте data-ajax="false"
в тег формы.
Комментарии:
1. Джастин, что ты подразумеваешь под «переносом представления поверх того, что было возвращено HTML»?
2. jQuery Mobile отображает почти все свои данные внутри одного «окна браузера» (например, одного DOM). Когда он получит новое содержимое HTML из запроса, он создаст новый объект «страница» в DOM, а затем переместит (сдвинет, исчезнет, свернет или любой другой тип перехода, который вы включили) его в область просмотра поверх того, что было ранее отображенной «страницей». Помните, что все это происходит в контексте одной традиционной «страницы» (иерархия DOM). Как только вы «поймете» эту концепцию того, как она обрабатывает «страницы», многие вещи jQuery mobile внезапно обретут гораздо больше смысла.
Ответ №2:
Если вы хотите программно отправить форму, задайте data-ajax
для атрибута формы false
значение, а затем установите обработчик события для submit
события для формы:
<form data-ajax=false></form>
$(function () {
$('form').bind('submit', function (event) {
event.preventDefault();
$.post('path/to/server.file', $(this).serialize(), function (data) {
alert('Server Response: ' data);
});
});
});