2013-07-22 434 views
0

我正在使用以下方式與Web api端點控制器進行通信。我遇到的問題是它返回xml而不是json。根據我的理解,您需要傳遞下面的內容類型來確定返回類型,這就是爲什麼我將它設置爲JSON。我難以理解如何返回json。使用web api返回JSON

$.ajax({ 
    url: 'http://localhost:43043/api/main?ordernumber=33232048&category=damage', 
    type: 'GET', 
    contentType: "application/json; charset=utf-8", 
    //data: { 
    // orderNumber: num, 
    // category: cat 
    //}, 
    success: 
      function (data) { 
       var usingRoutData = document.URL; 
       ko.applyBindings(new InvoiceViewModel(data)); 
      }, 

    error: function() { 
     alert('failure'); 
    } 

}); 
+0

您需要'dataType:「json」作爲.ajax調用的選項之一,當然還要確保服務器正在輸出有效的json代碼。 –

+0

您需要修改服務器端腳本並告訴IT返回json。客戶端不會將所發送的任何內容都轉換爲預期的數據格式。如果它返回XML,這是一個服務器端問題,而不是客戶端/ JavaScript。 –

+0

[我如何獲得ASP.NET Web API使用Chrome返回JSON而不是XML?](http://stackoverflow.com/questions/9847564/how-do-i-get-asp-net-web -api-to-return-json-instead-of-xml-using-chrome) – mikeswright49

回答

2

我相信你需要設置Accept頭設置內容類型頭的GET請求沒有任何意義。

$.ajax({ 
    url: 'http://localhost:43043/api/main?ordernumber=33232048&category=damage', 
    type: 'GET', 
    headers: {'Accept':'application/json'}, 
    //data: { 
    // orderNumber: num, 
    // category: cat 
    //}, 
    success: 
      function (data) { 
       var usingRoutData = document.URL; 
       ko.applyBindings(new InvoiceViewModel(data)); 
      }, 

    error: function() { 
     alert('failure'); 
    } 

}) 

;

0

你試過設置類型屬性:

數據類型: 「JSON」,

http://api.jquery.com/jQuery.getJSON/

+0

沒有足夠的代表回覆上面的Kevin B的評論。他使用的是Web API,默認情況下,它將返回客戶請求的類型(XML或JSON)。 –