不调用成功回调函数

时间:2015-05-20 11:06:28

标签: backbone.js

我正在构建一个简单的主干应用程序,并且在我的View中遇到成功回调函数的问题。 这是一个代码

    var EditUser = Backbone.View.extend({
        el: '.page',
        render: function(option){
            var that = this;
            if(option.id){
                that.user = new User({id : option.id});
                that.user.fetch({
                    success:function(user){
                        var template = _.template($("#edit-user-template").html());
                        that.$el.html(template({user: user}));
                    }
                });
            }else{
                var template = _.template($('#edit-user-template').html());
                that.$el.html(template({user: null}));
            }
        },
        events:{
            'submit .edit-user-form': 'saveUser',
            'click .delete': 'deleteUser'
        },
        saveUser: function(ev){
            var userDetails = $(ev.currentTarget).serializeObject();
            var user = new User();
            user.save(userDetails,{success: function(){
                router.navigate('',{trigger:true});
            },
            error: function(e){console.log(e);}
            });
            return false;
        },
        deleteUser:function(ev){
            this.user.destroy({
                success: function(){
                    router.navigate('',{trigger:true});
                }
            })
            return false;
        },
        wait:true
    });

在SaveUser函数上,查询发送到服务器是正确的,但在此之后,不会调用成功回调函数,导航到应用程序主页。 deleteUser方法出现同样的问题。 有什么想法是什么问题?谢谢!

1 个答案:

答案 0 :(得分:1)

它可能与您服务器的响应类型有关,预期的响应是将在您的属性上设置的JSON对象,但如果响应不同,则为" text"例如,解析失败。

这是使用模拟请求进行演示的小提琴

https://jsfiddle.net/gvazq82/rdLmz2L2/1/

options

在这个例子中,调用的错误函数在您的情况下没有发生,您的应用程序是否可能为" Ajax"定义了一些默认行为。呼叫?

我需要更多信息才能确定此问题,但希望这可以为您提供有关问题的一些指导。