2017-10-13 65 views
0

我試圖使用asp.net的Web API創建一個基本的REST的職位,但它返回的錯誤狀態:0。此外,它看起來像失敗AJAX請求asp.net網頁API AJAX狀態0

我控制器:

[HttpPost] 
    public myData Post(myData m) 
    { 
     return m; 
    } 

我的類:

public class CLData 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
} 

我的HTML要求:

<html> 

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</head> 

<body> 
    <script> 
     //form encoded data 
     var dataType = 'application/x-www-form-urlencoded; charset=utf-8'; 
     var data = $('form').serialize(); 

     //JSON data 
     var dataType = 'application/json; charset=utf-8'; 
     var data = { 
      FirstName: 'Andrew', 
      LastName: 'Lock', 
      Age: 31 
     } 

     console.log('Submitting form...'); 
     $.ajax({ 
      type: 'POST', 
      url: 'http://localhost:52884/api/contact', 
      dataType: 'json', 
      contentType: dataType, 
      data: data, 
      success: function(result) { 
       console.log('Data received: '); 
       console.log(result); 
      }, 
      error: function(error){ 
       console.log('Error: '); 
       console.log(error); 
      } 
     }); 
    </script> 
</body> 

</html> 

我不知道爲什麼我的控制檯日誌:

Submitting form.. 
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:52884/api/contact. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). 
Error: 
Object with status: 0 

有誰知道我做錯了嗎?我只是想學習Web API,這就是爲什麼這個例子很簡單。

+0

就像一個實驗,嘗試用'url:'/ api/contact'替換'url:'http:// localhost:52884/api/contact'。假設您的應用程序實際上承載了API端點和服務頁面。如果它未提供頁面,則需要在應用程序中啓用跨源請求。 –

+0

仍然是同樣的問題。 – user6824563

回答

1

如果您的應用程序未提供Web視圖和API端點,則需要啓用跨源請求。爲此,您需要在您的WebAPI項目中配置Cors。你可以在Microsoft Reference Page上找到詳細的細節。

但是,要點是安裝nuget pacakge Microsoft.AspNet.WebApi.Cors。您可以執行Install-Package Microsoft.AspNet.WebApi.Cors。從那裏,您將更新您的WebApiConfig Register方法,在頂部包含config.EnableCors();

接下來,您將使用[EnableCors]屬性修飾您的控制器類。從那裏,你應該能夠提出跨域請求。

+0

謝謝。它避免了Cross-Origin警告,但我仍然從AJAX錯誤方法中得到錯誤。 – user6824563

+0

https://stackoverflow.com/questions/2000609/jquery-ajax-status-code-0檢查一下 –