2016-08-26 23 views
2

在ASP.NET API中,如何在ajax中設置請求的數據類型時如何獲得ajax調用請求的數據類型?如何查看asp.net api中的ajax調用請求的數據類型

$.ajax({ 
    url: url, 
    data: params, 
    dataType: "xml", 
    type: "GET", 
    statusCode: { 
     200: function (data) { 

      } 
     } 

然後,在我的控制器中,我想知道我是否請求XML或JSON。

在此先感謝

+0

你能解釋一下你想知道的嗎? –

+0

剛剛編輯了這個問題。因此,在控制器中,我希望能夠看到在dataType之後的ajax請求中輸入了什麼:(「xml」或「JSON」) – devKoen1

+0

數據類型值只需在請求中添加「content-type」標頭。您的控制器會檢查此標題以選擇要執行的操作。 – Sylwit

回答

2

這正好在接受HTTP頭 - asp.net的WebAPI會做大部分的內容類型談判爲你 - 看到here

jQuery將把它放在接受頭作爲應用程序/ JSON或應用程序/ XML,你可以手動將它從請求.Headers

+1

是的。在Request.Headers.Accept.First()。MediaType中是精確的。 – devKoen1

0

如果我沒有記錯的話,這些信息將轉化爲你的「接受」頭HTTP請求。我不是100%肯定的,因爲這可能也只是由JQuery保存的信息來更好地解碼答案。無論如何,Ajax設置中還有一個accepts參數,它確實設置請求的「Accept」標頭。但是,JQuery的文檔說accepts參數的默認值取決於參數dataType,所以我會試着說我的第一個猜測是正確的。

爲了取回控制器的頭,只需撥打:

IEnumerable<string> headerValues = request.Headers.GetValues("MyCustomID"); 
var id = headerValues.FirstOrDefault(); 

(用於錯誤處理此方法見this Answer