我刚刚开始使用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();现在,骨干网应该向服务器发送一些GET数据,以确定它必须发送的数据。事实上,$_SERVER[ 'REQUEST_METHOD' ]说有一个GET请求,但是$_GET仍然是空的。
对于save(),我也遇到了类似的问题,我了解到,我可以在php://input中为所有POST和PUT请求找到数据。对于GET请求是否有类似的流?
我如何告诉骨干网发送像'.../ajax.php?model=NavigationElement&text=Login' ?这样的GET请求?
发布于 2015-11-26 10:02:58
默认情况下,model.fetch将使用
fetch的url属性model.url设置了什么?model.urlRoot属性,则追加/id的idmodel.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);
}
});http://jsfiddle.net/nikoshr/ygdbxn1q/1/
https://stackoverflow.com/questions/33929140
复制相似问题