2017-01-12 22 views
0
[ 
    { 
     "name": "AAAAAA", 
     "date": "28-03-2016", 
    }, 
    { 
     "name": "BBBBBB", 
     "date": "20-12-2016", 
    }, 
    { 
     "name": "CCCCCC", 
     "date": "09-01-2016", 
    }, 
    { 
     "name": "DDDDDD", 
     "date": "21-07-2016", 
    } 
] 

私のjavascriptを投稿:

var app = angular.module('app', []); 
    app.service('service', function($http, $q){ 
     var deferred = $q.defer(); 

     $http.get('names.json').then(function(data){ 
      deferred.resolve(data); 
     }); 

     this.getNames = function() { 
      return deferred.promise; 
     } 
    }); 
    app.controller('FirstCtrl', function($scope, service, $http) { 
     var promise = service.getNames(); 
     promise.then(function (data) { 
      $scope.names = data.data; 
      console.log($scope.names); 
     } 
    ); 
    $scope.postfunction = function(data) { 
     $http({ 
        method: 'POST', 
        url: 'serwerUrl' , 
        data: {"name":$scope.name}, 
        headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
      }) 
       .success(function(data){ 
        console.log('data success'); 
       }); 

HTML:私はボタン "POST" name.nameのポストをクリックしたときに

<tbody> 
    <tr ng-repeat="name in names"> 
     <td>{{name.name}}</td> 
     <td>{{name.date}}</td> 
     <td><button ng-click="postfunction(names)">POST</button></td> 
    </tr> 
</tbody> 

私が欲しいですサーバーに転送します。関数postfunction()を試してみましたが、サーバーにはポストしませんでしたが、私のコンソールではすべてが正常ですが、name.nameはサーバーにポストしません。

+0

postFunctionで '.catch()'メソッドを追加し、エラー – superUser

+0

あなたが関数に 'names'を渡しているがあるかどうかを確認、あなたはあなたの中に' data'という名前を付けますあなたは 'data:{" name ":$ scope.name}'をしますか? – Jax

+0

APIがコンテンツタイプ 'application/x-www-form-urlencoded'を取得していますか? Angularのデフォルトの 'application/json'を使うのが最善でしょうか?データをurlencodeする必要がある場合は、[$ httpParamSerializerJQLike Service](https://docs.angularjs.org/api/ng/service/$httpParamSerializerJQLike)を使用してください。 – georgeawg

答えて

1

送信しようとしている$scope.nameはどこにも定義されていません。

... 
<td><button ng-click="postfunction(name)">POST</button></td> 
... 

と完全にあなたのpostfunction$scope.name中と(も.successは廃止され、代わりに.successの.then使用)の代わりにこれを行う:あなたがnameにここnamesを変更したいと思う

$scope.postfunction = function(name) { 
    $http({ 
      method: 'POST', 
      url: 'serwerUrl' , 
      data: {"name": name}, 
      headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }) 
    .then(function(data){ 
     console.log('data success'); 
    }); 
} 
+0

これで、名前は投稿されましたが、名前はすべてjson name.nameです。 name.gate = name.nameに置き換えます。name.name – bafix2203

+0

次に、 'ng-click =" postfunction(name) "を' ng-click = "postfunction(name.name)"に置き換えます。 – Fissio

0

APIにはコンテンツタイプapplication/x-www-form-urlencodedが必要ですか?角のデフォルト値はapplication/jsonです。データをurlencodeする必要がある場合は、$httpParamSerializerJQLike Serviceを使用してください。

.controller(function($http, $httpParamSerializerJQLike) { 
    //... 

    $http({ 
    url: myUrl, 
    method: 'POST', 
    data: $httpParamSerializerJQLike(myData), 
    headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
    } 
    }); 

}); 

からAngularJS Param Serializer API Reference