2015-04-26 40 views
0

我想從我的網站使用Angular JS調用Web API,但我沒有收到任何數據。ASP.NET MVC WebAPI不返回數據

如果我從我的網站單獨運行API,我得到一個迴應,所以我知道服務運行正常並返回數據,所以它必須是我打電話或試圖顯示我的API中的數據的方式。

下面是我的網站上我的JS控制器的代碼。

有關什麼問題的任何想法?由於

(function() { 
var MealsController = function ($scope, $http) { 
    var meals = function (serviceResp) { 
     $scope.Meals = serviceResp.data; 
    }; 
    var errorDetails = function (serviceResp) { 
     $scope.Error = "Something went wrong ??"; 
    }; 
    $http.get("http://localhost:2153/api/meal") 
     .then(meals, errorDetails); 
    $scope.Title = "Meals Details Page"; 
    $scope.Meals = meals; 
}; 
app.controller("MealsController", MealsController); }()); 

這是我的觀點HTML代碼

<!DOCTYPE html> 
<html lang="en" ng-app="MealPlannerModule"> 
<head> 
<title>Employee Details</title> 
<script src="Scripts/jquery-2.1.3.min.js"></script> 
<link href="CSS/amelia.bootstrap.min.css" rel="stylesheet" /> 
<link href="CSS/Site.css" rel="stylesheet" /> 
<script src="Scripts/bootstrap.min.js"></script> 
<script src="Scripts/angular.min.js"></script> 
<script src="Scripts/app.js"></script> 
<script src="Controllers/MealsController.js"></script> 
</head> 
<body ng-controller="MealsController"> 
<p>Meal Name - {{Meals.mealID}}</p> 
</body> 
</html> 
+0

你可以澄清你的設置,當它工作,當它不工作?都說「我的網站」。你是否從不同的域訪問Web Api? –

回答

2

我想,你是在這裏做一個跨域AJAX請求違反same origin policyhttp://localhost:2153/api/meal。請確保您的Web API上有enabled CORS以使其正常工作。

此外,千萬不要忘記查看Web瀏覽器中的控制檯選項卡,其中將包含有關爲什麼代碼無法運行的有用信息。

+0

我已經在我的配置文件以及每個控制器上啓用了CORS [EnableCors(origin:「http:// localhost:55058」,headers:「*」,methods:「*」)]但是我不確定端口55058.這是否表示我的API正在運行的端口? – ASPCoder1450

+0

@ ASPCoder1450,老實說,我完全不知道'55058'指的是什麼端口,以及這是否是Web API運行的端口。這絕對是你應該知道的。我可以從你提供的代碼中說出的是,在你的客戶端應用程序中,你試圖向'http:// localhost:2153/api/meal'發出一個AJAX請求,並且如果你的SPA應用程序沒有被服務來自同一個域,您需要在此服務器上啓用CORS。 –

+0

您也可以使用jsonp作爲cors請求 –