1

GET を介して json オブジェクトを出力する単純なリソースを作成しました。URLはhttp://127.0.0.1:8000/api/v1/advert/?format=json正常に動作します。jQuery ajaxメソッドを使用してリソースにアクセスしようとすると、次のようになります。

ここに画像の説明を入力

ここに画像の説明を入力

これは私の JavaScript です。

$.ajax({
        url : 'http://127.0.0.1:8000/api/v1/advert/',
        dataType : 'json',
        type : 'GET',
        data : { format: 'json' },
        success : function(data) {
            console.log(data);
        }
    });

これは何が原因で、さらに重要なことに、どのように修正すればよいでしょうか? シンプルなリソースでDjango Pistonを実装しようとすると同じエラーが発生するので、これは実際のAJAXリクエストに関係していると思いますか?

編集。

jQuery ajax 呼び出しを少し調整し、リクエストの内容を含めました。

4

2 に答える 2

4

何度も頭を悩ませ、curl を使用してエラーをエミュレートしようとした後、ようやく問題の原因を突き止めました。拡張機能 Adblock Plus (Adblock Plus (Beta) 1.2) を備えた Google Chrome ブラウザーを使用しています。この拡張機能を無効にすると、ajax リクエストは正常に機能します。ABP がどの程度正確に影響を与えていたかはわかりませんが、問題の原因は間違いなく ABP でした。

于 2012-07-07T19:48:06.640 に答える
0

私が知っている自分の Tastypie API の ajax コードを試してみました。

また、jQuery ajax コマンドが最初に送信する OPTIONS リクエストに対して「赤い」結果行も表示されます。そのリクエストに対するレスポンスを見ると、実際には OK 200 であることがわかります。

ajax 呼び出しは OPTIONS リクエストを作成し、200 レスポンス ステータスを取得して転送をキャンセルするようです。これは、「Allow」レスポンス ヘッダーに必要なものがすべて含まれているためです。

あなたの場合、何らかの理由で実際に失敗しているように見えます(または、ブラウザの説明が異なるだけですか?)。

取得した応答ヘッダーを追加できますか?

(スクリーンショットを共有しますが、まだ担当者の作業中です:-/)

于 2012-07-07T17:44:17.050 に答える