0

私は次のようなJqueryajaxを介して投稿を行っています:

$.ajax({
    type: 'POST',
    url: "/sandbox/read_demands/",
    data: {
        "partner_ref": "PH",
        "return_field": ["summary", "details"]
    },
    success: [read_demands_response],
    dataType: 'json'
});

次に、request.POSTのみをログに出力する単純なDjangoビューを使用して、サーバー側でデータを受信します。データは次のようになります。

{u'return_field[]': [u'summary', u'details'], u'partner_ref': [u'PH']}

ご覧のとおり、キー「return_field」は「return_field []」になり、「partner_ref」の値はリストになりました。一体何が起こっているのですか?jqueryの投稿で、データの形式が正しくない原因となる明らかな何かが欠落していますか、それともこのエラーは別の場所から発生していると思いますか?問題の原因が見つかるまで、さまざまな可能性を排除しようとしています。

これはjquery1.8.2とDjango1.4btwです。

4

2 に答える 2

2

1つ目は、jQueryがjQueryであるということです。自分たちに最もよく知られている理由から、jQueryのメーカーは、PHPがサーバー側アプリケーションを作成する唯一の方法であると信じており、PHPは、複数の値を持つフィールドに[]サフィックスが付いていることを期待しています。追加します。Djangoではそのように使用する必要があります。

ただし、2番目はエラーではありません。これがDjangoQueryDictの仕組みです。どの値にも複数のアイテムを含めることができるため、それらは常にリストとして表されます。ただし、request.POST['partner_ref']単一の値が正しく与えられます。実際、他のキーの両方の値にアクセスするには、を実行する必要がありますrequest.POST.getlist('return_field[]')

編集:コメントで指摘されているように$.ajaxSettings.traditional = true;、jQueryの問題を修正します。

于 2012-10-24T08:07:04.863 に答える
0

私は同じ問題に取り組んできましたが、この関連する質問を見つけました。

Ajax経由で投稿されたDjangoで配列を取得する方法

答えは使用することをお勧めします

request.GET.getlist('data')
于 2013-03-21T19:39:20.573 に答える