4

私のアプリケーションの 1 つでこの問題が発生しており、それを取り除き、問題がまだ発生する小さなテスト環境をセットアップしました。

次のオブジェクト(JSON)を投稿しています

{
    "eventName":"Testing from Services",
    "tickets":10,
    "_date":"10/10/2013",
    "_time":"8:00 PM",
    "ticketsLocation":"Testing from Services",
    "date":"2013-10-11T00:00:00.000Z"
}

次のajax呼び出しを使用して

self.save = function (item, url, success) {
    $.ajax({
        type: "post",
        data: JSON.stringify(item),
        contentType: "application/json, charset=utf-8",
        traditional: true,
        datatype: "json",
        url: self.domain + url,
        success: success,
        error: self.error
    });
};

次に、サーバー上で次のコードを使用してデータをバインドします

var Model = this.Bind<PropertyType>();

PropertyType正しいタイプ ( Event) です。

Event参考までにクラスはこちら

public class Event
{
    public string EventName { get; set; }
    public int Tickets { get; set; }
    public Venue Venue { get; set; }
    public string TicketsLocation { get; set; }
    public DateTime Date { get; set; }
    public List<EventRequest> Requests { get; set; }
}

これは Firefox では問題なく動作します。Chrome と IE では、最終的にすべて null 値を持つオブジェクトになりますModelEvent私が知る限り (Fiddler を使用して)、投稿要求はすべてのブラウザーでまったく同じです。他のマシンでもこれをテストし、自分のマシンやブラウザを問題から除外しました。

何か案は?ブラウザが Nancy モデル バインディングにどのように影響するかわかりません...

4

1 に答える 1

9

簡単な答えは、コンテンツ タイプが無効であるということです。application/json, charset=utf-8人々が何と言おうと、コンテンツ タイプなどというものはありません。content-type の有効なcharsetオプションの拡張機能ですが、適用されません。application/json

これについては、 http://www.ietf.org/rfc/rfc4627.txt?number=4627のセクションで読むことができます。6 IANA considerations

JSON テキストの MIME メディア タイプは application/json です。

型名:アプリケーション

サブタイプ名: json

必須パラメーター: 該当なし

オプションのパラメーター: 該当なし

エンコーディングに関する追加説明付き

エンコードに関する考慮事項: UTF-8 の場合は 8 ビット。UTF-16 または UTF-32 の場合はバイナリ

 JSON may be represented using UTF-8, UTF-16, or UTF-32.  When JSON
 is written in UTF-8, JSON is 8bit compatible.  When JSON is
 written in UTF-16 or UTF-32, the binary content-transfer-encoding
 must be used.

要するに、JSON はすでに暗黙のうちにutf-8. 実際、セクションの下3. Encodingにそれは述べています

JSON テキストは Unicode でエンコードする必要があります。デフォルトのエンコーディングは UTF-8 です。

送信するapplication/jsonと、準備が整います

お役に立てれば :-)

于 2013-07-24T22:49:19.233 に答える