JQTouch AJAX Форма обратного вызова - PullRequest
0 голосов
/ 23 июня 2011

У меня есть простая форма AJAX POST, настроенная в приложении jQTouch. Мы говорим из коробки просто:

<form id="contact" class="topPage" method="post" action="/process/mobile-submit.cfm">
   <!-- Various form guts go here -->
</form>

И это прекрасно работает. Мои пользователи вводят свои данные, мой серверный скрипт выполняет свою работу, поглощает данные о потенциальных клиентах и ​​выдает простой готовый ответ.

<div>
    <div class="toolbar">
        <a href="#contact" class="slide back">Back</a>
    </div>
    <div class="info">
        <strong>Thank You For Your Submission</strong><br />
        We have received your inquiry, and blah blah blah jibber jabber.
    </div>
</div>

Все счастливы ... кроме тех из нас, кто пытается отслеживать конверсию в Google Analytics. Теперь у меня есть виртуальные просмотры страниц, настроенные на каждой панели в этом приложении с использованием события pageAnimationEnd, которое очень просто, если вы знаете, к каким селекторам они будут присоединены заранее, но когда jQTouch создает новый сегмент из возврат формы, он имеет общий сериализованный идентификатор, например # page- N .

Я попытался добавить свободный блок скрипта в форму возврата. Это отлично работает для Firefox на моем рабочем столе, но не так много для Safari на моем телефоне.

Поскольку я позволил jQTouch обрабатывать детали AJAX для меня в этом случае, есть ли простой способ присоединить к нему обработчик успеха? Или мне лучше привязать обработчик pageAnimationEnd к $('[id^=page-]') и надеяться, что компания не захочет, чтобы я делал что-то еще со специальными возвратами формы, пока мы не заменим это приложение тем, которое написано в jQuery Mobile?

1 Ответ

0 голосов
/ 23 июня 2011

сработало. Естественно, возвращаемый фрагмент может объявить свой собственный идентификатор, и jQTouch будет обрабатывать его так, как если бы он был оригинальной частью документа. Раньше я предполагал, что jQTouch не подскажет, какие атрибуты я дал фрагменту; Я был не прав.

Это означает, что вы можете перейти к нему, как к любой другой части документа. Это также означает, что вы можете привязать обработчик pageAnimationEnd к возвращаемому фрагменту либо по идентификатору, либо по имени класса, и он будет работать так, как ожидается. Таким образом:

<div class="formResult">
<div class="toolbar">
    <a href="#contact" class="slide back">Back</a>
</div>
<div class="info">
    <strong>Thank You For Your Submission</strong><br />
    We have received your inquiry, and blah blah blah jibber jabber.
</div>

И

$('.formReturn').live('pageAnimationEnd', function(evt, info) {
    if (info.direction == 'in') {
        // Goal completion code
    } else {
        $(this).remove();
    }
});
...