2013-07-18 33 views
5

我正在使用Django的REST框架爲API供電,並使用jQuery向其發送Ajax請求。向Django REST框架發送jQuery請求導致找不到JSON對象錯誤

,下列curl正常工作:

curl -X POST -d '{"timeLogMins": 30, "personid": 3, "projectid": 8, "timeLogStart_dtm": "2013-07-18"}' -H "Content-Type: application/json" -u user:password http://localhost:8000/api/timelogests/ 

然而,當我使用jQuery一個Ajax調用,我得到一個錯誤

$.ajax({ 
    url: update_url2, 
    contentType:"application/json", 
    headers: { 
     "Authorization": "Basic " + window.btoa("user:password"), 
    }, 
    dataType: "json", 
    data: { 
      "timeLogMins":30, 
      "personid":personid, 
      "projectid":projectid, 
      "timeLogStart_dtm":start_date 
      }, 
    type: 'POST', 

}).error(function(r){ console.log(r) }) 
.success(function(r){ console.log("success", r) }) 

設置頁眉工作正常,但數據似乎回報:

"{"detail": "JSON parse error - No JSON object could be decoded"}" 

我昨天開始使用REST Framework,所以對它仍然很新穎。有沒有一種方法可以攔截請求頭並檢查該JSON? REST框架請求對象不是很明顯。

+1

事實證明,將數據發送到實際的字符串將使JSON可以被框架讀取。根據jQuery文檔,這應該以任何方式發生,但它似乎打破了這個特定的數據對象佈局?這解決了我的問題,但我不確定有什麼問題。如果我能弄明白,我會把它作爲答案發布。 – Simon

+0

它看起來像Json數據沒有得到正確創建,你可以嘗試與硬編碼值,如{「timeLogMins」:30,「personid」:3,「projectid」:8,「timeLogStart_dtm」:「2013-07- 18「} –

+0

@AnshJ是的,看到我以前的評論。最終這就是我最終做的,發送一個字符串而不是一個對象,我還沒有回答這個問題,因爲我不知道爲什麼jQuery不處理數據對象,因爲它應該。我猜這可能是如何「日期」被格式化的問題。 – Simon

回答

5

事實證明,將數據發送到實際的字符串將使JSON可以被框架讀取。根據jQuery文檔,這應該以任何方式發生,但它似乎打破了這個特定的數據對象佈局?這解決了我的問題,但我不確定有什麼問題。

相關問題