backbone.js model.fetch不向php

时间:2015-11-26 01:18:16

标签: javascript php backbone.js

我刚刚开始使用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中找到所有POSTPUT请求的数据。 GET请求是否有类似的流?

我如何告诉Backbone发送像'.../ajax.php?model=NavigationElement&text=Login' ?

这样的GET请求

1 个答案:

答案 0 :(得分:0)

默认情况下,model.fetch将使用

中的第一个
  • 将选项中的url属性传递给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);
    }
});

http://jsfiddle.net/nikoshr/ygdbxn1q/1/