请问backbone.js如何发起一个带有特定header请求参数的URL资源请求?

发布于 2022-09-01 05:53:44 字数 550 浏览 15 评论 0

这个标题有点绕口,举个简单例子,我设置一个合集并发起一个posts请求来获取数据,如下:

var student = Backbone.Model.extend({
    defaults: {
        Code: '10001',
        Name: '张三',
        Score: 100
    }
});

var stulist = Backbone.Collection.extend({
    model: student,
    url: 'api/create.php'
});

var stus = new stulist();
stus.create({
    Code: '10107',
    Name: 'Lee',
    Score: 750
});

这段代码建立一个模型,带有参数Code、Name、Score,向api/create.php发起请求

如果我想加一个请求参数,例如:action,而不修改模型中固定的三个属性(如果是get请求,可以是api/create.php?action=3),请问POST请求如何做到?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城旧梦 2022-09-08 05:53:44

我不太确定你要解决的问题是什么,所以提供的答案不一定能够满足你的需求

两种可以尝试的方法,设置collection的beforeSend方法,比如:

var student = Backbone.Model.extend({
    defaults: {
        Code: '10001',
        Name: '张三',
        Score: 100
    }
});
var stulist = Backbone.Collection.extend({
  model: student,
  url: 'api/create.php'
});

var setHeader = function (xhr) {
  xhr.setRequestHeader('X-Parse-Application-Id', 'aqLJlmE2rRXBOy***************');
  xhr.setRequestHeader('X-Parse-REST-API-Key', 'gvT2Isd5vAvjgq*****************');
}

var stus = new stulist();
stus.create({
    Code: '10107',
    Name: 'Lee',
    Score: 750
},{
    beforeSend: setHeader
});

或者如果是一个更为普遍的情况的话,你也可以尝试整个override sync这个方法。

var sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
  options.beforeSend = function (xhr) {
    xhr.setRequestHeader('X-Parse-Application-Id', 'aqLJlmE2rRXBOy***************');
    xhr.setRequestHeader('X-Parse-REST-API-Key', 'gvT2Isd5vAvjgq*****************');
  };

  // Update other options here.

  sync(method, model, options);
};

只是提供个思路,希望能对你有帮助哈~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文