Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js获取方法不工作_Javascript_Json_Codeigniter_Rest_Backbone.js - Fatal编程技术网

Javascript Backbone.js获取方法不工作

Javascript Backbone.js获取方法不工作,javascript,json,codeigniter,rest,backbone.js,Javascript,Json,Codeigniter,Rest,Backbone.js,我对Backbone.js相当陌生,我正试图了解它是如何获取数据并将数据发布到RESTAPI的。 在下面的Codeigniter代码中,我试图从返回json对象的RESTAPI获取数据。 使用输入字段和提交按钮,我试图将值传递给控制器函数,如果在数据库模型中找到json数据,该函数将返回json数据。 据我所知,在调用fetch()时,URL应该改变,但当我按下submit按钮时,什么也没有发生。虽然如果我手动输入这种格式的url:我会返回jason数据。 我需要做什么才能将输入字段中的值提交到

我对Backbone.js相当陌生,我正试图了解它是如何获取数据并将数据发布到RESTAPI的。 在下面的Codeigniter代码中,我试图从返回json对象的RESTAPI获取数据。 使用输入字段和提交按钮,我试图将值传递给控制器函数,如果在数据库模型中找到json数据,该函数将返回json数据。 据我所知,在调用fetch()时,URL应该改变,但当我按下submit按钮时,什么也没有发生。虽然如果我手动输入这种格式的url:我会返回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>

$(文档).ready(函数(){
var TodoItem=Backbone.Model.extend({
url:函数(){
var urlstr=“../../index.php/testcontroller/getdatabasedata?searchvalue=“+this.get(“name”);
返回urlstr;
},
默认值:{
名称:空,
}
});
var todoitem=新todoitem();
var TodoView=Backbone.View.extend(
{
el:'集装箱',
型号:todoitem,
初始化:函数(){
this.listenTo(this.model,“sync change”,this.gotdata);
},
活动:{
“单击提交”:“获取数据”,
},
getdata:函数(事件){
var celebname=$('#celebname').val();
this.model.set({name:celebname});
this.model.fetch();
},
gotdata:函数(){
var age=this.model.get(“age”);
$('#age').html(age);
},
});
var todoView=new todoView();
});

事件是否回答了您的问题,当您单击“#submitbtn”时,您可以在函数getdata()中创建一个console.log

主要问题是您将
TodoItem
定义为
Collection
,但实际上,在
TodoView
中将其用作
model
,最后面的一开始是Backbone.model.extend,这仍然不起作用,然后我尝试作为一个集合。
Model!=收藏
。不能将集合用作模型。从阅读@hindsmost开始是的,我知道这一点。但是我不明白为什么在调用fetch()你的
时URL没有改变。fetch
调用实际上什么都不做,只是因为你的模型格式不正确。所以URL并不重要,因为它从未被使用过。史密斯我已经添加了它,但在控制台中似乎什么也没有发生。这意味着单击按钮的事件没有注册。我已经读到该按钮必须位于container div中。在我的情况下,它是,并且应该不会引起任何问题。您确定吗,我运行了您的代码,它会运行到函数getdata中,只需检查您是否具有“#submitbtn”`getdata:function(事件){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 404(未找到)容器