我刚刚开始使用backbone.js,以了解有关它的更多信息,我在一个项目中使用Javascript作为客户端代码,在服务器端使用PHP。
要了解 Backbone 和服务器之间的通信实际上是如何工作的(确实找不到任何关于它的好的文档。我只是为 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' 这样的 GET 请求?
最佳答案
默认情况下,model.fetch
将使用第一个可用的
- 在选项中传递的 url 属性以
获取
model.url
设置的内容model.urlRoot
,如果id
属性存在,则附加/id
model.collection.url
,如果id
属性存在,则附加/id
您可以在 NavigationElement
上提供自定义 url
方法来设置不同的端点。例如:
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/
或者,如果您只想在读取
操作上传递其他参数,则可以覆盖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);
}
});
关于javascript - backbone.js model.fetch 不向 php 发送任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929140/