jQuery的/ jqtouch的getJSON调用导致无限循环?
题
编写我的第一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>
任何提示,将不胜感激,由于事先! : - )
<强>更新强>
显然.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
以某种方式触发,这里是你在做什么:
动画端部,所以你的绑定方法确实的AJAX调用。这Ajax调用对完成ajaxComplete()
注册的回调,上面写着“回家”。这旅途中的家庭大概不会某种动画,其中,在完成触发你的Ajax调用。这Ajax调用对完成ajaxComplete()
注册的回调,上面写着“回家” ......等等等等。
可能是你想要的是不是一个普通的ajaxComplete()
都会调用所有Ajax请求,但也不单一呼叫您的登录代码的特定的一个。我不完全相信你想实现,但这样很难给你一个解决问题的方法是什么。这应该是一个足以解释你的问题,但如果我没有理解错的一切
其他提示
我不是很好用jQuery,但我认为你可以使用$(selector).one(function(){...}
防止循环。
不隶属于 StackOverflow