2014-06-11 56 views
0

我提出的POST請求:AngularJS對待POST響應作爲字符串數組,而不是僅僅串

var offers = $resource('/api/offers/:id', { 
    id: '@id' 
} 

offers.save({}, { name: $scope.newOfferName }, function (offerId) { 
    $location.path('/offers/' + offerId); 
}); 

我期望OFFERID爲字符串「密鑰」,而是我得到一個數組[0]「K 「,[1]」e「,[2]」y「。

在後端我使用南希和我回使用響應:

響應頭說的Content-Type:text/plain的,並在Chrome中預覽(網絡選項卡),我可以看到「關鍵」。

當我返回一個對象爲JSON時,它工作正常,但我不想創建假類(有一個字符串字段)只是爲了將字符串傳遞給客戶端。

我認爲南希在這裏很好。 Angular發生了什麼?

回答

1

angular有一個默認的轉換,試圖解析傳入的數據爲json。 https://github.com/angular/angular.js/blob/master/src/ng/http.js#L94

您可以完全從$ http中的變換器數組中刪除該變換,或者將其替換爲在嘗試變換數據之前檢查內容類型的變換。

+0

很高興知道'#L94'遵循Github鏈接帶給您第94行代碼。 –

2

您不必爲此創建。您可以使用匿名類型:

Post["/"] = _ => 
{ 
    return Response.AsJson(new { offerId = "key" }); 
}; 
+0

是的,這就是我會做的,但@Zerot的答案解釋了爲什麼它是這樣的,所以我將它標記爲答案。 –

相關問題