2015-11-10 41 views
0

我使用AngularJs實現了一個請求,但是當我的服務器向客戶端返回badrequest時,錯誤函數的參數數據是空的。有關http方法的疑問AngularJS

$http({ 
    method: args.method, 
    url: URL+'/'+args.url, 
    data: JSON.stringify(args.data), 
    headers : { 
     'Content-Type': 'application/json' 
}, 
responseType: 'json' 
}).success(function(data, status, headers, config) { 
    // 
}).error(function(data, status, headers, config) { 
    console.log(data); 
    console.log(status); 
    console.log(headers); 
    console.log(config); 
}); 

但是,當我使用jquery請求它的作品。

$.ajax({ 
     url: URL+"/"+args.url, 
     data: JSON.stringify(args.data), 
     dataType: "json", 
     contentType: "application/json", 
     type: args.method}) 
    .done(function (data, textStatus, xhr) { 
     ; 
    }) 
    .fail(function(xhr, textStatus, thrownError) { 
     if (xhr.status == 400) { 
      console.log(xhr.responseText); 
     } 

    }); 

輸出的Jquery的Ajax:

測試

我怎樣才能得到這個職位,方法的返回值時,服務器通過angularJS功能錯誤請求返回?

+0

你需要明白'error'回調用於告訴用戶$ http'服務本身或後端的任何錯誤,現在你必須告訴$ http'對象關於錯誤的方式是使用HTTP狀態碼(http://www.restapitutorial.com/httpstatuscodes.html)。 現在,你告訴我,jQuery的作品;你能向我們展示一下你的後端嗎?我的意思是,請求失敗的地方? – weirdpanda

+0

Ty爲你的答案。我的後端是用java語言編寫的。這是我的後端返回'Response.status(Status.BAD_REQUEST).entity(message).build();'。 'message'參數是我想要得到的參數。 'message'包含登錄錯誤('無效密碼')。 –

+0

根據您的網絡Api調用是get還是post,它將要求填充參數或數據屬性,當您要將數據傳遞給調用 – pixelbits

回答

0

我可能是錯的,因爲我不知道你的後端結構,但據我記得,AngularJS」 $http服務通4參數傳遞給回調的:它只是傳遞一個。

引用角的文檔上$http

// Simple GET request example: 
$http({ 
    method: 'GET', 
    url: '/someUrl' 
}).then(function successCallback(response) { 
    // this callback will be called asynchronously 
    // when the response is available 
    }, function errorCallback(response) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    }); 

此外,文檔的推移來定義response對象:

響應對象具有以下屬性:

數據 - {string|Object} - 用轉換的響應主體轉換函數。

狀態 - {number} - 響應的HTTP狀態碼。

標頭 - {function([headerName])} - 標頭吸氣功能。

配置 - {Object} - 被用來產生 該請求的配置對象。

statusText - {string} - 響應的HTTP狀態文本。

所以,其中一個錯誤可能是您沒有給它正確的回撥;這在vanilla JavaScript中是一個非常微不足道的問題,但是我在過去經歷過Angular和EmberJS。

嘗試並得到status的響應檢查是後端正在返回正確的錯誤響應代碼。如果是這樣,那麼Angular中的狀態分析引擎就會出現問題。

據我記憶,有這些情況,但他們是固定的。最後,嘗試使用AngularJS的最新版本stable並檢查錯誤是否仍然存在。

+0

Ty爲你的答案,但我已經閱讀了文檔,我嘗試了他們的解決方案,但仍然沒有奏效。 =( –

+0

)當我使用jquery方法時,它的工作原理是使用'ionic start'命令下載Angular Framework的版本 –

+0

所以,這個錯誤發生在手機上,我猜? – weirdpanda