javascript - backbone.js model.fetch 不向 php 发送任何数据

标签 javascript php backbone.js

我刚刚开始使用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);
    }
});

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

关于javascript - backbone.js model.fetch 不向 php 发送任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929140/

相关文章:

javascript - 如何对checkbox、radio做checked? Javascript

php - SWFUpload 选择文件后会发生什么?

php - 在magento 2 api的 Controller 中使用post方法获取发送的值

php - 我如何修复这些错误 - 重定向到我的服务器(maby)

javascript - 使用 JQuery/Javascript 对单个更改事件执行多个操作

php - php if 语句的奇怪问题

javascript - 在 Backbone.js 应用程序中使用 lodash 而不是下划线

javascript - Backbone 集合模型在解析后消失

javascript - 如何在主干js中获取响应代码?

javascript - 未捕获的类型错误 : Cannot read property 'props' of null