2016-02-08 24 views
0

嘿,我不知道爲什麼我不能將我的數據以json格式發送到我的web API 2函數。Jquery AJAX發送JSON到web API 2函數

我的AJAX:

$('#btSubmit0').click(function() { 
    $.ajax({ 
     url: "/febClassifieds/", 
     type: "GET", 
     crossDomain: true, 
     contentType: 'application/json; charset=utf-8', 
     dataType: "jsonp", 
     data: JSON.stringify({ febID: "3a7c1773-128a-4b11-81f8-76302a678ddd" }), 
     success: function (data) { 
      console.log(data); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      console.log('error: ', XMLHttpRequest); 
     } 
    }); 
}); 

我的網絡API函數代碼:

[HttpGet] 
[Route("febClassifieds/{febID}")] 
public IHttpActionResult getFebClassifieds(febClassifieds.febClassifiedsVars data) 
{ 
    try 
    { 
     ....code here......(never gets to this part anyways) 
    } 
} 

功能類別:

namespace WebApi.App.classes 
{ 
    public class febClassifieds 
    { 
     public class febClassifiedsVars 
     { 
      public string febID { get; set; } 
     } 
    } 
} 

測試它的時候了當地這永遠不會觸發該功能關閉。它只是告訴我的錯誤:

GET http://localhost:55473/febClassifieds?callback=jQuery17105937835655640811_1454958628992& {%22febID%22:%223a7c1773-128a-4b11-81f8-76302a678ddd%22} & _ = 1454958676643

在控制檯.. 。

我可能會錯過什麼才能使其工作?

+0

你在用什麼'jsonp'?另外,如果這是一個GET請求,那麼'FromBody'參數沒有意義,因爲'GET'請求沒有主體。另外,這條路線是否意味着URL中應該有一個'febID'?你沒有提供。 – David

+0

@David即時使用** config.Formatters.Add(新的JsonMediaTypeFormatter()); **爲jsonp繞過CORS不工作的問題。我拿出** FromBody **,但我仍然得到錯誤。 – StealthRT

回答

0

如果要發送JSON格式,請更改類型:「GET」,並鍵入:「POST」。

0

我會在您的ajax調用和API端點中將您的請求類型更改爲POST。

現在將febClassifieds類移動到您的模型文件夾(如果您沒有製作一個)。還要更改名稱空間。

然後在你的控制器將其更改爲:

[HttpGet] 
[Route("febClassifieds")] 
public IHttpActionResult getFebClassifieds(febClassifieds.febClassifiedsVars data) 
{ 

而且你可能要考慮通過移除febClassifiedsVars類改變你的結構febClassifieds類。屬性febId被隱式定義爲它定義的類的「變量」。通過添加一個嵌套類,您只是增加了不必要的複雜性,並且有可能出現錯誤。

希望這會有所幫助!