2012-12-19 82 views
3

我有一個到http://api.local/user/auth的跨域POST請求 - 我的API端點。我允許CORS使用我的API中的跨域請求。如果這有所幫助,請使用Chrome瀏覽器。Ajax Post請求返回JSON,但延遲失敗

我得到200個狀態碼有效的服務器JSON響應,但我使用deferreds從骨幹模型像這樣:

@model.save() 
    .fail(-> console.log 'sync fail') 
    .success -> 
    console.log 'sync OK' 

而且我一直得到一個「同步失敗」而不是預期的「同步OK '

想法?

+0

響應內容類型是否設置爲JSON?如果您希望從服務器返回的數據類型與服務器發回的數據類型不同,即使獲得200響應,有時您也會收到錯誤響應。 – Lukas

+0

man awesome catch - 多數民衆贊成在我認爲 - 我可以強制對JSON的迴應,因爲我幾天沒有訪問該API?它現在以text/html的形式返回 – imrane

+0

使用'console.log.bind(console)'而不是函數表達式來記錄錯誤原因。 – Bergi

回答

0

確保您期望的內容類型與您收到的內容類型相符。如果你找回text/html的從服務器的內容類型,則dataType屬性設置爲"html"在請求:

model.save({}, {dataType: "html"}).... 

(對不起,我沒有使用過很多的CoffeeScript,所以我不知道確切的語法。)

+0

在閱讀$ .ajax文檔後,嘗試了這個...甚至嘗試使用dataType轉換:'html json' - 沒有工作。我有一個ajaxPrefilter,我正在使用,並通過那裏,還有你的方法 - 任何其他想法? – imrane

+1

@imrane:所以你得到了JSON,但是使用MIME類型'text/html'?然後'dataType:「json」'應該可以工作... – Bergi

+0

是的,我已經嘗試了幾乎所有的數據類型的組合...包括@Bergi - 這讓我很難過,而且我確信它簡單一些uggggh – imrane