$ 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)。