2016-05-19 37 views
4

私は新しくイオン性と角張っています。私はangular.jsを使用してイオンフレームワークでサンプルを構築しています。 $ http postメソッドを通してWebApiを呼びたいと思います。私はこの(ionic-proxy-example)ソリューションをチェックし、私は私のAPIを使用して同じを実装しようとしています。私のサンプルプロジェクトで上記の例で提供されているAPIを呼び出すと、私はレコードを取得しますが、私の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を呼び出すために複数の方法を確認しています。意外なことに、CORSエラーなしでajaxのポストコールで動作します。 Angularを使用しているので、$ http postでこれを実行しようとしています。私はそれがマイナーな問題だと思っていますが、私は理解できません。ソリューションに感謝します。ありがとうございました。

+0

フロントエンドアプリまたはバックエンドで、どこでエラーが発生しますか?あなたのリクエストがどのように見えるかについて開発者のコ​​ンソール/ネットワークをチェックし、送信しているURLを再確認してください。 – MayK

+0

ブラウザがapiにリクエストを出したときにエラーがブラウザに表示されます。私はFiddlerでpingを実行すると結果が得られます。 – KKV

+0

バックエンド側ではどうしますか?あなたのバックエンドはxcrfトークンを期待していますか? – MayK

答えて

0

問題は、我々はPOST中に複数のオブジェクトを渡すときに、$http.post要求の代わりに、WebAPIのでbelow-

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

として$http.get

+0

apiはPOST要求を受信するように設定されています。私は明示的に "データ"を送信しています。 – KKV

0

てみたGETリクエストでPOSTを送信していることです私たちは500の内部エラーを取得し、そのため、このようなシナリオではViewModelを使用します(asp.net MVCについて)。

2

コンテンツタイプをjsonに設定しているため、サーバーはjson文字列を期待していますが、オブジェクトを送信しているときに正しくフォーマットされたjson文字列を受け取れないため、エラーが発生します。

$http.post(ApiEndpoint.url, data, config)がある場合は$http.post(ApiEndpoint.url, JSON.stringify(data), config)に変更してください。

ことは、仕事application/x-www-form-urlencodedにコンテンツタイプを変更し、$http.post(ApiEndpoint.url, $httpParamSerializer(data), config)にこのライン$http.post(ApiEndpoint.url, data, config)を更新しない場合は、$httpParamSerializer機能を注入することを忘れないでください。

関連する問題