0

私は ajax リクエストを行うという問題があり、私の django ビューはビューを処理し、古いコンテンツを置き換えるコンテンツで JsonResponse を返します。残念ながら、応答は古いコンテンツを置き換えません - コンテンツでリダイレクトされます。ページは次のようになります。

{"content": "<h3>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e</h3>\n<div>\n    <a href=\"/\">\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443</a>\n</div>", "success": true}

js:

$( '#main' ).on( 'click', '#submit', function() {
    $form = $( '#form' );
    $.ajax({
        type: $form.attr('method'),
        dataType: "JSON",
        url: $form.attr('action'),
        data: {
            form: $form.serialize()
        }
    }).done( function( response ) {
        console.log('ok');
        $( '#old' ).remove();
        $( '#contact' ).append(response.content);
    })
});

見る:

     ...
                content = render_to_string('mock.html')
                return JsonResponse({
                    'success': True,
                    'content': content
                })
...

どうすれば修正できますか?

4

3 に答える 3

0

投稿の場合は、ajax リクエストで csrfmiddlewaretoken を送信していることを確認してください。そうしないと、403 が返され、リダイレクトされる可能性があります。

これをテストする簡単な方法は@csrf_exempt、ビューにデコレータを追加することです。

于 2015-03-29T12:33:51.930 に答える
-1

これを試しましたか:

$( '#contact' ).html(response.content);

あなたはそれを交換したいですか?

于 2015-03-29T11:46:55.073 に答える