我正在尝试找出使用jQuery通过回调传递的每个ajax调用的响应的最佳方法,以便我可以检查返回中的某些状态。例如,在用户会话到期的情况下,我的应用程序将返回如下内容:
{loggedIn: false}
我认为我可以使用ajaxComplete,但我的其他回调似乎首先触发,这导致js错误。我需要做的是:
我的ajaxComplete代码如下:
$(document).ajaxComplete(function (event, res, settings) {
var response = eval('(' + res.responseText + ')');
if (response.hasOwnProperty('logged_in') && ! response.loggedIn) {
//redirect to log in form or something
}
});
为什么我的其他回调会先发射?
其他注意事项:作为backbone.js路由的结果,调用以下函数,该路由最终会触发ajax调用以获取指定标记的某些图像。 this._getImagesForTag只返回$ .ajax(...)的结果。
function getImagesForTags (tag) {
var me = this;
this._getImagesForTag(tag).then(function (r) {
//reset the collection so we can re-render the canvas
store.images().reset(r);
}, function (r) {
//no images were found so a 404 was sent from the server
store.images().reset();
}).complete(function (r) {
//trigger a tag-changed event
me.globalEvents.trigger('tag:changed', tag);
});
};
_getImagesForTag: function (tag) {
//get imges for some tag from the api
return $.gallery('api/images/tags/' + tag, {type: 'get'});
},
最后:
$.extend({
gallery: function (url, data) {
//send a request to an arbitrary url with some data. Expects to
//get json returned.
return $.ajax(State.url + url, $.extend({
dataType: 'json',
type: 'post'
}, data));
}
});
嗯......我想知道getImagesForTags中的.complete()是否覆盖了我的ajaxComplete?