Обратный вызов формы jQTouch AJAX

У меня есть простая форма 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?


person Eric Kolb    schedule 23.06.2011    source источник


Ответы (1)


Сработало. Возвращаемый фрагмент, естественно, может объявить свой собственный идентификатор, и тогда 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>

And:

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