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