我刚刚开始使用backbone.js来了解更多有关它的信息,我在服务器端使用Javascript作为客户端代码和PHP。
了解骨干网与服务器之间的通信是如何工作的(无法找到关于它的任何好的文档。我只为fetch()
做了一个小例子:
var NavigationElement = Backbone.Model.extend({
initialize: function() {},
defaults: {
text: 'Home',
link: '/',
category: 'Main'
},
url: 'ajax.php'
});
var forum = new NavigationElement( { text: 'Forum',
link: '?q=Forum'});
var login = new NavigationElement( { text: 'Login',
link: '?q=Login',
category: 'User'});
forum.fetch();
现在,Backbone应该向服务器发送一些GET
数据,以识别它必须发送的数据。实际上,$_SERVER[ 'REQUEST_METHOD' ]
表示存在GET请求,但$_GET
仍为空。
对于save()
我遇到了类似的问题并且了解到,我可以在php://input
中找到所有POST
和PUT
请求的数据。 GET
请求是否有类似的流?
我如何告诉Backbone发送像'.../ajax.php?model=NavigationElement&text=Login' ?
答案 0 :(得分:0)
默认情况下,model.fetch
将使用
fetch
model.url
model.urlRoot
属性存在,则附加/id
的id
如果model.collection.url
属性存在/id
的id
您可以在url
上提供自定义NavigationElement
方法来设置不同的端点。例如:
var NavigationElement = Backbone.Model.extend({
initialize: function() {},
defaults: {
text: 'Home',
link: '/',
category: 'Main'
},
url: function() {
return 'ajax.php?model=NavigationElement&text='+encodeURIComponent(this.get('text'));
}
});
演示:http://jsfiddle.net/nikoshr/ygdbxn1q/
或者如果您只想在read
操作上传递其他参数,则可以覆盖fetch
并将数据作为选项传递:
var NavigationElement = Backbone.Model.extend({
initialize: function() {},
defaults: {
text: 'Home',
link: '/',
category: 'Main'
},
url: 'ajax.php',
fetch: function(options) {
options = options || {};
options.data = _.extend({
model: 'NavigationElement'
}, this.pick('text'));
return Backbone.Model.prototype.fetch.call(this, options);
}
});