簡體   English   中英

jquery / jqtouch getJSON調用導致無限循環?

[英]jquery / jqtouch getJSON call causing infinite loop?

編寫我的第一個JQTouch應用程序。 當我從#login轉到#home ,JSON ajax調用成功發生,但pageAnimationEnded事件似乎處於無限循環中。

        $(function(){

            $('#login').ajaxComplete(function (e, xhr, settings) {                
                jQT.goTo('#home', 'flip'); 
            }); 

            $('#home').bind('pageAnimationEnd', function(e, info){

                alert('animation ended'); //infinite loop happens in here

                $.getJSON('/test', function(data) {
                     alert('json: ' + data); //this returns data successfully
                });

            });

        });

登錄POST調用JQuery攔截並變成AJAX:

  <div id="login" class="current">
        <div class="toolbar">
            <h1>testapp</h1>
            <a class="button slideup" id="infoButton" href="#about">About</a>
        </div>
        <form:form commandName="user" action="/login/authenticate">
            <ul class="edit rounded">
                <li><form:input path="email"/></li>
                <li><form:password path="password" /></li>                    
                <li>Remember Me<span class="toggle"><input type="checkbox" /></span></li>                    
            </ul>
           <a style="margin:0 10px;color:rgba(0,0,0,.9)" href="" class="submit whiteButton">Login</a>
        </form:form>
    </div>

任何提示將不勝感激,提前感謝! :-)

UPDATE

顯然.ajaxComplete也接收其他元素的事件。 我添加了一個警衛來過濾我想要的事件:

         $(document).ready(function(e){
              alert('document ready');

              $('#login').ajaxComplete(function (e, xhr, settings) {      

                  if(settings.url == '/login/authenticate') { //add check to prevent infinite loop
                      alert('jqt goto ' + settings.url);          
                      jQT.goTo('#home', 'flip'); 
                  }
             }); 

             $('#home').bind('pageAnimationEnd', function(e, info){

                alert('animation ended');

                $.getJSON('/test', function(data) {
                     alert('json: ' + data);
                });

             });
        });

雅這肯定會導致無限循環。 假設初始的pageAnimationEnd以某種方式被觸發,這就是你正在做的事情:

動畫結束,因此您的bind方法執行ajax調用。 該ajax調用在完成時注冊了一個回調ajaxComplete() ,表示“回家”。 這回家可能會做某種動畫,完全觸發你的ajax調用。 該ajax調用在完成時注冊了一個回調ajaxComplete() ,表示“回家”......等等。

你想要的可能不是通用的ajaxComplete() ,它可以在所有ajax請求上調用,但是在你的登錄代碼上執行一次特定的調用。 我不確定你想要實現什么,所以很難給你解決問題的方法。 如果我理解正確的話,這應該是對你的問題的充分解釋

我對JQuery不太滿意,但我認為你可以使用$(selector).one(function(){...}來阻止循環。

http://api.jquery.com/one/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM