2015-02-12 48 views
1

更新:02/12/2015 正如在評論中提到的,這是一個由Angular模塊修改對象的問題。如下所述,我可以使用toJSON進行追蹤。角度承諾從JSON API返回不正確的數據

我最近遇到了一個非常難以理解的問題。我有一項服務,即通過get請求從api獲取請求數據。在Chrome開發人員工具中查看網絡面板時,api會返回正確的結果,但它們不會顯示在角度請求的響應中。

你可以注意到內容部分缺少項目。和角碼:

角碼

function getPhotos(){ 
     return $http.get('/photo') 
     .then(getPhotosComplete) 
     .catch(function(err){ 
     //handle errors 

     }); 
     function getPhotosComplete(res){ 
     //Showing incorrect response here 
     console.log("getPhotosComplete", res); 
     return res.data; 
     } 
    } 

從API { url: "https://dev.amazonaws.com/060a2a5f-8bb7-4ffa-aa7d-e715439271a3.jpg", archive_name: "140809", seedcount: 0, viewcount: 0, live: true, current: false, next: false, createdAt: "2015-02-10T17:48:41.505Z", updatedAt: "2015-02-12T04:11:02.239Z", content: [ "Balloon", "Apartment", "Testing", "Testing 2", "Party", "Inez" ], id: "54da44790eb10b0f00b453a1" }

在服務範圍角/ res.data { url: "https://dev.amazonaws.com/060a2a5f-8bb7-4ffa-aa7d-e715439271a3.jpg", seedcount: 0, viewcount: 0, live: true, current: false, next: false, createdAt: "2015-02-10T17:48:41.505Z", updatedAt: "2015-02-12T04:11:02.239Z", content: Array[3] 0: "Balloon", 1: "Apartment", 2: "Party" ]

+1

如果您使用的是非縮小的Angular,則可以調試到Angular的代碼來查看Angular如何轉換您的響應。 AFAIK,Angular會嘗試將您的響應轉換爲JSON對象。也許在那裏出了問題。 – Rebornix 2015-02-12 04:35:55

+1

你確定嗎?嘗試使用JSON.stringify進行日誌記錄,以確保它不僅僅是一個顯示工件。 'Array [3] 0:「Balloon」,1:「Apartment」,2:「Party」]看起來很可疑,因爲它甚至不是JSON – 2015-02-12 04:39:03

+0

@JuanMendes - 我相信,它只是返回的對象安慰。我也使用batarang並登錄很多地方。 – jeffreynolte 2015-02-12 04:41:34

回答

2

如果從輸出3210是正確的,但該對象的console.log是錯誤的,那麼它強烈建議在調用console.log之後的某處代碼中修改該對象。

這是因爲console.log需要對一個對象的引用,並在一段時間後將它變成一個字符串輸出。我會將它分類爲稍微惡意的行爲,因爲它暗示該錯誤在調用console.log之前,而實際上是在它之後的問題。通過錯誤的代碼可能會浪費小時...

+1

這個小提琴可能有助於解釋你的意思是什麼'console.log' http://jsfiddle.net/mg1yu0fo/ – 2015-02-12 13:30:00