2015-11-30 206 views
0

我(數據,狀態,頭,配置,狀態文本)使用$ http.post()消息,使應用程序中的服務器調用。服務器代碼位於.net中。對於特定用例,當進程失敗時,服務器會返回一個業務異常和一條消息。

現在我可以看到越來越印在Chrome的在紅色的控制檯,用404代碼一起。另外,我可以在Fiddler標題部分的頂部看到消息,如「HTTP/1.1 404消息到此處」。但我沒有得到如何從響應頭中提取該消息。

我想打印在控制檯的功能如下,

$http.get(requestURL).success(
       function (data,status,headers,config,statusText) { 
        //deferred.resolve(data); 
        console.log("In service",data,status,headers,config,statusText); 
       }).error(
       function (data, status, headers, config, statusText) { 
        //deferred.reject(data); 
        console.log(data, status, headers, config, statusText); 
       }); 

的頭,「匿名函數(名)」我需要幫助的東西提取出來的,(如果可能的話)。 statusText打印爲未定義。我真的需要幫助,因爲我需要向用戶顯示發送的消息。

如果它的事項:該消息是「reasonPhrase」屬性被髮送從服務器

回答

1

首先,在.success.error方法已過時。你應該使用.then

全部詳情可在此頁 - https://docs.angularjs.org/api/ng/service/$http

在你的榜樣,你應該使用這樣的事情:

$http.get(requestUrl).then(function (response) { 
    // success handling 
    console.log(response.headers()); 
}, function (response) { 
    // error handling 
    console.log(response.headers()); 
}); 

response.headers是一個函數。當你調用它(var headers = response.headers();)時,它會返回一個包含來自HTTP響應頭部的對象。

按照上面鏈接,響應對象中的頁面上的細節可以訪問如下:

  • 數據 - {string|Object} - 響應與所述變換函數變換體。
  • status - {number} - 響應的HTTP狀態碼。
  • 標頭 - {function([headerName])} - 標頭吸氣功能。
  • config - {Object} - 用於生成請求的配置對象。
  • statusText - {string} - 響應的HTTP狀態文本。
1

我不知道你正在使用的angularjs的版本,但「傳統」 successerror回調已棄用了一段時間。

請考慮.then(...)新辦法在這裏看到: https://docs.angularjs.org/api/ng/service/$http

但是,爲了回答你的問題: 在回調函數的參數headers代表一個getter,所以你需要調用它:headers()。您也可以在那裏應用參數(特定標題)。

+0

補充一點'.then'老角工作見[爲傳統AngularJS V1.2更新](HTTP://計算器。com/a/33860223/5535245) – georgeawg

+1

感謝您的提示,不知道這一點。所以沒有理由繼續使用舊的語法@Saurabh - 你還會發現更多有關這種新方法的文檔。 – FlorianTopf