0

jQuery を使用して Django の ajax リクエストを送信しています。応答テンプレートを選択するには、次のように要求をチェックしています。

def about(request) :
    context = {'content' : 'about.html',
               'section_nav' : 'about_nav.html'}

    if request.is_ajax() :
        context['ajax'] = True

    return render_to_response('main.html', context)

main.html で ajax かどうかを確認し、別のテンプレートを拡張します。jQuery は次のように単純です。

$.get('/about/', function(data) {
        $('.article').html(data);
});

Chrome と Firefox では問題なく動作しますが、IE9 は request.is_ajax() で False を返し、間違ったコンテキストでページをロードします。この問題を克服し、IE から (jQuery を使用して) ajax リクエストを作成し、django で認識するにはどうすればよいですか?

4

2 に答える 2

2

$.ajaxの代わりに使ってみてください$.get。using$.ajaxはすべてのブラウザーで動作しますが$.get、IE では ajax ヘッダーを送信しないことを読みました。

また、キャッシュ オプションを false に設定します。

于 2012-07-31T19:02:53.380 に答える
0

jQuery ajax リクエストを作成するときに、django のリクエスト メソッド is_ajax() が機能するための適切なヘッダーを送信しない IE のバージョンが少なくとも 1 つ見つかりました。

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.is_ajax

これを修正するには、jQuery $.ajax 呼び出しにヘッダーを手動で追加します。つまり、 $.ajax({'headers': {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'},...});

于 2013-01-30T21:06:05.680 に答える