4

我正在调用save()Backbone 模型。这适用于我尝试过的每个浏览器的每个版本,除了iOS 上的 Safari 和 Safari。

在这 2 个浏览器中,调用失败,然后出现400 Bad Request错误。电话看起来像../common/User/

我的User模型如下所示:

Backbone.Model.extend({

    idAttribute: "UserId",
    initialize: function() {
    }, 

    url: function () {
        var base = 'common/User/';
        return (this.isNew()) ? base : base + this.id;
    },...

我试图保存的信息如下所示:

{"BrowserType":"Safari","BrowserVersion":5.1,"ApplicationPath":"index"}

我不确定我可以提供哪些其他信息来提供帮助。

任何想法为什么会发生这种情况?

编辑 请求标头看起来像:

Accept:application/json, text/javascript, */*; q=0.01
Content-Type:application/json
Origin:http://localhost:1087
Referer:http://localhost:1087/index.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
X-Requested-With:XMLHttpRequest
4

1 回答 1

2

更新User模型的url方法以包含尾部斜杠:

url: function () {
    var base = 'common/User/';
    return (this.isNew()) ? base : base + this.id + "/";
},

我在我的 Backbone 项目中遇到了同样的问题——尽管我在其他浏览器中没有问题,但在 Safari 和 Mobile Safari 中对特定模型的所有//请求都失败了POST。正如@mu 的评论所暗示的那样,在我的模型方法中添加一个斜杠解决了这个问题。PUTPATCHurl

于 2013-07-24T17:03:42.050 回答