【发布时间】: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