4

save()バックボーン モデルを呼び出しています。これは、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 プロジェクトでも同じ問題が発生していました -- 特定のモデルに対するすべての //リクエストPOSTがSafari と Mobile Safari では失敗しましたが、他のブラウザでは問題はありませんでした。@muが短すぎるというコメントが示唆するように、モデルのメソッドに末尾のスラッシュを追加すると、問題が修正されました。PUTPATCHurl

于 2013-07-24T17:03:42.050 に答える