首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >backbone.js model.fetch不向php发送数据。

backbone.js model.fetch不向php发送数据。
EN

Stack Overflow用户
提问于 2015-11-26 01:18:16
回答 1查看 136关注 0票数 1

我刚刚开始使用backbone.js来了解一个项目的更多信息,在这个项目中,我使用Javascript编写客户端代码,在服务器端使用PHP。

要了解主干和服务器之间的通信是如何工作的(不能真正找到任何关于它的好文档)。我刚刚为fetch()做了一个小例子

代码语言:javascript
复制
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中为所有POSTPUT请求找到数据。对于GET请求是否有类似的流?

我如何告诉骨干网发送像'.../ajax.php?model=NavigationElement&text=Login' ?这样的GET请求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 10:02:58

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

  • 将选项传递给fetch的url属性
  • model.url设置了什么?
  • 如果存在model.urlRoot属性,则追加/idid
  • 如果存在model.collection.url属性,则追加/idid

您可以在url上提供一个自定义的NavigationElement方法来设置不同的端点。例如:

代码语言:javascript
复制
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并将数据作为选项传递:

代码语言:javascript
复制
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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33929140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档