4

壊れたコードを参照したフィドルは次のとおりです。試してみると、送信先のサーバーが応答しないため、アプリからトラフィックを受信して​​いないと思います。問題は明らかですか?そうでない場合、問題を調査するためにどのようなトラブルシューティング方法を使用できますか?

stackoverflow は、コードをインラインで含めることを望んでいるので、ここにあります。

index.html

<div ng-controller="DataEntryCtrl">
      <form ng-repeat="entryField in entryFields">
            <input type="text"
                   ng-model="entryField.fieldData"  
                   placeholder="{{entryField.pHolder}}">
      </form>

      <input type="button" ng-click="sendJSON()" value="Object To JSON" />
      <hr/>
       {{res}}
     <ul>
       <li>ID: {{entryFields.id.fieldData}}</li>
       <li>description: {{entryFields.description.fieldData}}</li>
       <li>date: {{entryFields.date.fieldData}}</li>
    </ul>            

</div>

controller.js

'use strict';
/* Controllers */
var app = angular.module('Hubbub-FrontEnd', ['ngResource']);

app.controller('DataEntryCtrl', function($scope,$resource) {
   $scope.entryFields = {
     id:           {pHolder:'ID goes here',fieldData:""},
     description:  {pHolder:'Description goes here',fieldData:""},
     date:         {pHolder:'Drop Dead Date goes here',fieldData:""}
   };

   $scope.showJSON = function() {
       $scope.json = angular.toJson($scope.entryFields);
   };
   $scope.sendJSON = function() {
       $scope.entry = angular.toJson($scope.entryFields);
       $scope.res = $resource('http://10.64.16.6:3000/Create',
         {create:{method:'POST'}},{params:$scope.entry});
       };



});
4

2 に答える 2

3

現在、ユーザーがボタンをクリックするたびに同じリソースを作成しています。

あなたができることは、コントローラーのどこかにサービスを作成することです

var Res = $resource('http://10.64.16.6:3000/res/:id', {id: '@id'});

次に、ユーザーがボタンをクリックすると、リソースの新しいインスタンスを作成し、送信するデータを渡します

$scope.sendJSON = function() {
    $scope.entry = angular.toJson($scope.entryFields);
    var r = new Res();
    r.$save({params: $scope.entry});    
};

メソッド$saveはから継承されngResourcePOSTリクエストを実行します。ここにjsfiddleがありますhttp://jsfiddle.net/jaimem/FN8Yg/19/

開発者ツールでは、リクエスト メソッドはOPTIONSjsfiddle から作成されるため、次のようにリストされます。リクエストパラメーターは、これらの線に沿ったものになります

params:{"id":{"pHolder":"ID goes here","fieldData":"sdf"},"description":{"pHolder":"Description goes here","fieldData":"sdf"},"date":{"pHolder":"Drop Dead Date goes here","fieldData":"sdf"}}

ここで$resource の詳細を読むことができます

于 2012-12-05T01:51:41.570 に答える
1

この質問は、AngularJS がクロスオリジン リソースに対して OPTIONS HTTP リクエストを実行するのと同様に役立つかもしれません。クロスオリジンのサポートを許可するには、いくつかのヘッダーを設定する必要がある場合があります。

それを超えて、リソースを作成しているときにパラメータが壊れている可能性もあります:-

$scope.res = $resource('http://10.64.16.6:3000/Create',
     {create:{method:'POST'}},{params:$scope.entry});

試す:

$scope.res = $resource('http://10.64.16.6:3000/Create', null,
     {create:{method:'POST', params: $scope.entry}});
$scope.res.create();

はい、事前にリソースを作成できるので、ボタンがクリックされるたびにリソースを再作成する必要はありません。

于 2012-12-05T01:20:31.720 に答える