2012-07-07 40 views
1

我創建了一個簡單的資源,通過GET輸出我的json對象。該網址是http://127.0.0.1:8000/api/v1/advert/?format=json,工作正常。現在,當我嘗試使用jQuery ajax方法訪問資源時,訪問資源時,jQuery Ajax失敗(Django Tastypie)

enter image description here

enter image description here

這是我的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調用幷包含請求內容。

+0

不應該使用數據選項來包含GET參數(例如格式)嗎? – 2012-07-07 17:57:16

+0

嗨,我已經更新了JS代碼,現在使用數據參數。不幸的是它仍然失敗。 – Kevin 2012-07-07 18:36:54

回答

0

我嘗試了我自己的tastypie API的ajax代碼,我知道它正在工作。

我還得到了一個「紅色」結果行,用於jQuery ajax命令最初發送的OPTIONS請求。如果我查看該請求的響應,我會看到它實際上是OK 200.

似乎ajax調用使OPTIONS請求獲得200響應狀態,然後取消傳輸,因爲它已經擁有了它需要的所有內容「允許」迴應標題。

在你的情況下,它看起來像是由於某種原因實際上失敗(或者瀏覽器可能會用不同的方式描述它)?

你能添加你得到的響應頭嗎?

(我會分享我的截圖,但我還在我的代表: - /)

+0

您好,我已經更新了原有的帖子,並附加了截圖,並稍微修改了ajax調用。它仍然失敗(儘管稍有不同 - 請求方法現在是GET而不是OPTIONS)。也沒有響應標題信息,所以我不認爲ajax調用實際上在那裏? – Kevin 2012-07-07 18:34:59

4

一些撓頭的時刻,試圖仿效使用curl錯誤後,我終於找到源問題。我使用帶擴展程序Adblock Plus(Adblock Plus(Beta)1.2)的Google Chrome瀏覽器。禁用此擴展後,ajax請求正常工作!我不確定ABP究竟如何影響它,但它絕對是問題的根源。