jquery для мобильного и динамического содержимого страницы - PullRequest
4 голосов
/ 30 июня 2011

У меня есть веб-сайт jquery moblie, работающий с django.у меня есть сценарий использования, когда что-то может занять много времени, поэтому я бы хотел, чтобы пользователь видел, как он продвигается;в моем примере это последовательность событий и являются ли они успешными / неудачными.

в бэкэнде у меня есть объект generator, который выплевывает эту информацию.он обернут вокруг объекта HttpResponse, чтобы заполнить потоковый аспект обновлений.простая веб-страница (только теги html и body) демонстрирует, что она работает должным образом.

однако jquery mobile (по крайней мере по умолчанию) любит загружать всю страницу перед ее отображением.

iне против показать этот вывод в виде диалога.

есть идеи?

Ответы [ 2 ]

0 голосов
/ 30 июля 2011

только для того, чтобы обновить мой опыт.

, поэтому в конце я потратил большую часть своего времени, царапая свою голову мобильным jquery.конечно, если бы у меня был rtfm'd заранее, у меня, вероятно, была бы меньшая головная боль от всего этого!в основном обновления страницы ajax были просто раздражающими, поэтому здесь важно было бы отключить их, используя rel="external" или data-ajax="false" в моем html form - и, из-за способа использования #, вы также будетеЯ хочу добавить эти теги на любые страницы, которые также загружают эту страницу (в противном случае многостраничность не будет работать должным образом).

Затем я создал многостраничную страницу jqm и связался с ней с помощью кнопки отправки (в моем случаес data-rel="dialog"), со второй страницей с пустым iframe;Я установил форму target для этого iframe и вуаля!оно работает!результат потоковой передачи из представления формы отображается как следует.

, чтобы суммировать его:

  • django HttpResponse возвращается, где его аргумент является объектом генератора.это обеспечивает потоковую природу вывода.
  • создать страницу jqm:

    <div id="main" data-role="page">
      <div data-role="content">
        <form id="myform" method="post" target="response-iframe" action="***django generator page***" data-ajax="false">
          ...
          <a id="submit-button" href="#secondary" data-rel="dialog" data-role="button" data-theme="e">Submit</a>
          <script>
          $('#submit-button').live( 'click', function(){
              $('#port-form').submit()
            })
          </script>
        </form>
      </div>
    </div>
    
    <div id="secondary" data-role="page">
      <div data-role="content">
        <iframe id="response-iframe"></iframe>
      </div>
    </div>
    

0 голосов
/ 18 июля 2011

Вы можете опросить Django об обновлениях, используя обычные запросы AJAX.

Это не решает проблему jquery mobile и long polling, но дает вам гибкость, необходимую для того, чтобы отложить вашу долгосрочную задачу от внешнего интерфейса до внутреннего (например, с помощью Celery).1004 * Для поддержания производительности я рекомендую обновить состояние с долго выполняющейся задачи до экземпляра memcached.

По вашему мнению, просто извлеките прогресс и вернитесь, т.е. который запустит диалоговое окно или обновит какой-нибудь div.Еще лучше - только результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...