backbone.js - Requirejs 环境中 Backbone.js ajax 请求的全局错误处理程序

标签 backbone.js requirejs

define(function (require) {

    "use strict";

    var $         = require('jquery'),
        Backbone  = require('backbone'),
        Shell     = require('app/views/Frame/Shell'),
        Auth      = require('app/models/json/session');

    // Tell jQuery to watch for any 401 or 403 errors and handle them appropriately
    $.ajaxSetup({
        statusCode: {
            401: function(){
                // Redirect the to the login page.
                Backbone.history.navigate("login", true);            
            },
            403: function() {
                // 403 -- Access denied
                Backbone.history.navigate("login", true);
            }
        }   
    });

    return Backbone.Router.extend({

        routes: {
            "" : "home",
            "login" : "login",
            "logout" : "logout"
        },

        initialize: function (opt) {
            ev = opt.ev;            
            //Session.fetch();
        },

        home: function (id) {           
            new Dashboard({ev: ev});
        }

    });
});

上面的结构我是从http://clintberry.com/2012/backbone-js-apps-authentication-tutorial/学来的我觉得像这样全局设置 ajax 错误不是正确的方法

backbone 和 requirejs 的正确使用方法是什么?

最佳答案

define(["Backbone"], function(Backbone){
    Backbone.ajax = function() {
        // Invoke $.ajaxSetup in the context of Backbone.$
        Backbone.$.ajaxSetup.call(Backbone.$, {
            statusCode: {
                401: function(){
                    // Redirect the to the login page.
                    Backbone.history.navigate("login", true);
                },
                403: function() {
                    // 403 -- Access denied
                    Backbone.history.navigate("login", true);
                }
            }
        });
        return Backbone.$.ajax.apply(Backbone.$, arguments);
    };    
});

关于backbone.js - Requirejs 环境中 Backbone.js ajax 请求的全局错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23852237/

相关文章:

javascript - 当回调触发手动表单提交时,不会调用 jQuery 表单提交处理程序

javascript - 将 jQuery Mobile (1.1.0) 与 AMD (RequireJS) 分开

javascript - 主干验证返回属性名称

javascript - backbone.sync 获取所有响应错误状态码

javascript - 无法接收 CORS 的 http 状态代码 413

javascript - 如何将主干路由器应用于完整路径,而不是哈希

javascript - 发出多个 ajax 请求时,是否有 "good pattern"用于跟踪响应与哪些数据对齐?

node.js - 让 Cordova 等待异步钩子(Hook)完成

asp.net - 具有多个页面的 RequireJS -- 使用优化器

angular - SystemJs 无法在 angular4 中使用 Windows 身份验证和 typescript