【问题标题】:Backbone.js: Save's success function simply does not workBackbone.js:Save 的成功功能根本不起作用
【发布时间】:2012-05-26 21:44:33
【问题描述】:

我试图让最基本的东西在 Backbone.js 中运行,但不知何故失败了。我为将 url 模型保存到服务器而生成的代码。

urlToAdd.set({url: urlBody.value, tags:tagsToAdd});
                urlToAdd.save({
                    success:function(){
                        console.log('it works');
                    }
                });

成功 将数据发送到我的 php 页面,但是我无法让 success 事件正常工作。我在哪里做错了?我仔细观察了,没发现什么。

这是我的模型定义:(不幸的是,因为我是骨干菜鸟,我已经通过查看教程应用了这个,但我不知道 url 函数中的代码是否必要

var URLWithTags=Backbone.Model.extend({
            initialize:function(){
                console.log('URL object has been initialized');
            },
            defaults:{
                url:'not defined',
                tags:[]
            },
            validate:function(attributes){
            //console.log(attributes.tags[0].length);
                /*if(attributes.tags[0].length<1)
                    return "You should create at least one tag";*/
            },
            urlRoot:'/URLTags/manage.php',
            url:function(){
                var base = this.urlRoot || (this.collection && this.collection.url) || "/";
                console.log("Base has been produced");
                if(this.isNew())
                    return base;

                return base+"?id="+encodeURIComponent(this.id);
            },
        });

【问题讨论】:

标签: php javascript backbone.js


【解决方案1】:

当您调用 save 函数时,Save 应该是对象中的第二个参数。 请人们阅读文档,或注释良好、简短易读的来源。

urlToAdd.save(null,{success:function(){console.log('it works')}});

根据文档:

savemodel.save([attributes], [options]) ;

所以:

urlToAdd.save({},{success:successCallback , error:errorCallback}); 

编辑

示例:

    var Car,yukon,$target ;
    Object.prototype.toString = function(){
        return JSON.stringify(this);
    };

    Car = Backbone.Model.extend({
        url:"/echo/json"
    });
    yukon= new Car({"color":"red","brand":"GM"});
    $target = $("#target");

    $target.append("describe yukon :",yukon.toString(),"<br/>");

    yukon.save({},
{
success:function(o){$target.append("save success <br/>",o.toString())},
error:function(e){$target.append("error",e)}
}
); 

其中 $target 是一个 jquery 对象,表示一个 id 为 target 的 div。

【讨论】:

  • 我会按照你建议的方式更新代码,但我想我之前尝试过但没有成功
  • 没有用。 urlToAdd.set({url: urlBody.value, tags:tagsToAdd}); urlToAdd.save(null, { success:function() { console.log('it works') } }); 添加了一个额外的 },因为它给出了语法错误
  • 是的,我忘记了 },创建一个错误函数,以防您的保存操作失败:
  • urlToAdd.set({url: urlBody.value, tags:tagsToAdd}); urlToAdd.save(null, { success:function() { console.log('it works') } }, { error:function() { console.log('it does not work'); } }); 什么都不做。抱歉,如果我问的太多了,但是当我的服务器端 php 将数据保存到数据库时,它实际上什么也没打印
  • 好吧,我们需要模型定义的其余部分。如果您的脚本不是 restfull api,请务必配置 Backbone.sync。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2021-12-17
  • 1970-01-01
相关资源
最近更新 更多