jquery ajax与ajaxComplete问题

时间:2011-11-20 10:00:08

标签: jquery ajax

我正在尝试找出使用jQuery通过回调传递的每个ajax调用的响应的最佳方法,以便我可以检查返回中的某些状态。例如,在用户会话到期的情况下,我的应用程序将返回如下内容:

{loggedIn: false}

我认为我可以使用ajaxComplete,但我的其他回调似乎首先触发,这导致js错误。我需要做的是:

  • 运行ajax call
  • 获得响应,在任何其他回调触发之前,将结果传递给某个全局函数,以便我可以查找{loggedIn:false}
  • 之类的内容 如果一切都通过我的全局审查功能,
  • 运行其他回调。

我的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?

0 个答案:

没有答案