【问题标题】:Backbone.js fetch method is not workingBackbone.js 获取方法不起作用
【发布时间】:2015-12-25 15:17:46
【问题描述】:

我对 Backbone.js 还很陌生,我正在尝试了解它是如何获取数据并将数据发布到 REST api 的。 在 Codeigniter 下面的代码中,我试图从返回 json 对象的 REST api 中获取数据。 使用输入字段和提交按钮,我试图将值传递给控制器​​函数,如果在数据库模型中找到数据,该函数应该返回 json 数据。 据我了解,调用 fetch() 时 URL 应该更改,但是当我按下按钮提交时没有任何反应。虽然如果我手动输入这种格式的网址:http://localhost/Codeigniter/index.php/testcontroller/getdatabasedata?searchvalue=Rome 我确实会取回 jason 数据。 我需要做什么才能将输入字段中的值提交到控制器函数并显示结果?

谢谢

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min.js"></script>

<script language="Javascript">
    $(document).ready(function () {
      var TodoItem = Backbone.Model.extend({
        url: function () {
          var urlstr = "../../index.php/testcontroller/getdatabasedata?searchvalue="+this.get("name");
          return urlstr;
        },
        defaults: {
          name: null,

        }
      });

      var todoitem = new TodoItem();
      var TodoView = Backbone.View.extend(
      {
        el: '#container', 
        model: todoitem,

        initialize: function(){
          this.listenTo(this.model,"sync change", this.gotdata);
        },
        events: {
            "click #submitbtn" : "getdata",

          },
          getdata: function (event) {
            var celebname = $('#celebname').val();

            this.model.set({name:celebname});
            this.model.fetch();
          },
          gotdata: function () {
            var age = this.model.get("age");
            $('#age').html(age);
          },
      });
      var todoView = new TodoView();
});
</script>

【问题讨论】:

  • 主要问题是你将TodoItem定义为Collection,但实际上在TodoView中使用model
  • @hindmost 一开始是Backbone.Model.extend,还是不行,后来我作为Collection试了。
  • Model != Collection。您不能将 Collection 用作模型。从阅读开始the manual
  • @hindmost 是的,我知道这一点。但我不明白为什么调用 fetch() 时 URL 没有改变
  • 您的 .fetch 调用实际上什么都不做,因为您的模型格式错误。所以 URL 并不重要,因为它从未使用过。

标签: javascript json codeigniter rest backbone.js


【解决方案1】:

事件是否回答了您,当您单击“#submitbtn”时,您可以在函数 getdata() 中使用 console.log

【讨论】:

  • smith 我已经添加了它,但在他的控制台中似乎没有发生任何事情。这意味着点击按钮的事件没有注册。
  • 我已经读到按钮必须位于容器 div 中。在我的情况下,它是,并且应该没有问题。
  • 你确定吗,我运行你的代码,它运行到函数 getdata,只需检查你是否有'#submitbtn'
  • ` getdata: function (event) { var celebname = $('#celebname').val(); this.model.set({name:celebname}); this.model.fetch(); console.log('just try tu get request') }, ` 输出是:just try tu get request jquery.min.js:4 GET localhost:63342/index.php/testcontroller/… 404 (Not Found)
  •  
    容器
猜你喜欢
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
相关资源
最近更新 更多