$ http Post上的Angularjs – 500(内部服务器错误)

我是离子和angular的新手。 我正在使用angular.js构build带ionic framework的示例。 我想通过$ http post方法调用WebApi。 我检查了这个( 离子代理的例子 )解决scheme,我试图用我的api实现相同的。 当我在示例项目中调用上述示例中提供的api时,我得到的logging,但它不与我的api工作。 它会引发500个内部错误。

这是我的app.js

angular.module('myApp', ['myApp.controllers', 'myApp.services']) .constant('ApiEndpoint', {url: 'http://localhost:8100/api'}) 

Services.js

 angular.module('myApp.services', []) .factory('Api', function($http, $q, ApiEndpoint) { console.log('ApiEndpoint', ApiEndpoint) var getApiData = function() { var q = $q.defer(); var data = { Gameweek_ID: '179', Vender_ID: '1', Language:'en' }; var config = { headers : { "Content-Type": "application/json; charset = utf-8;" } }; $http.post(ApiEndpoint.url, data, config) .success(function (data, status, headers, config) { // $scope.PostDataResponse = data; alert('success'); console.debug("response :" + data); q.resolve(data); }) .error(function (data, status, header, config) { // $scope.ResponseDetails = "Data: " + data + alert('error'); console.debug("error :" + data); q.reject(data); }); return q.promise; } return {getApiData: getApiData}; }) 

controllers.js

 angular.module('myApp.controllers', []) .controller('Hello', function($scope, Api) { $scope.employees = null; Api.getApiData() .then(function(result) {console.log("result is here"); jsonresponse = result.data; $scope.employees = jsonresponse;} ) 

});

和Ionic.Project文件

 { "name": "Multilingual", "app_id": "4b076e44", "proxies": [ { "path": "/api", "proxyUrl": "" } ]} 

我试图了解这个问题,并检查了多个方法来调用api。 令人惊讶的是,它与AJAX后调用没有任何CORS错误。 正如我正在使用Angular,我试图通过$ http post完成这个。 我觉得这是一个小问题,但我无法弄清楚。 将不胜感激的解决scheme。 谢谢。

你已经将内容types设置为json,所以服务器需要一个jsonstring,但是没有收到正确格式的jsonstring,因为你通过一个对象发送错误。

你有$http.post(ApiEndpoint.url, data, config)更改为$http.post(ApiEndpoint.url, JSON.stringify(data), config)

如果这不起作用,请将您的内容types更改为application/x-www-form-urlencoded然后将此行$http.post(ApiEndpoint.url, data, config)$http.post(ApiEndpoint.url, $httpParamSerializer(data), config) ,不要忘记注入$httpParamSerializer函数。

问题是你发送一个POST $http.post请求,而不是一个GET请求与$http.get

尝试如下 –

 $http({ url: ApiEndpoint.url, method: "POST", data: data, headers: {'Content-Type': 'application/x-www-form-urlencoded'} }).Success(..rest code goes here..) 

在WebAPI中,当我们在POST方法中传递多个对象时,我们得到500个内部错误,因此我们在这种情况下使用ViewModel(谈论asp.net MVC)。