簡體   English   中英

將數據發布到服務器angular $ http post

[英]Post data to server angular $http post

[
    {
        "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:

<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>

我想要做的是單擊按鈕“ POST” name.name發布到服務器。 我嘗試了函數postfunction(),但是它沒有發布到服務器,在我的控制台中一切正常,但是name.name沒有發布到服務器。

您嘗試發送的$scope.name並未在任何地方定義。

你要更改names這里為name

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

並在您的后postfunction$scope.name執行此操作(也請使用.then而不是.success,不建議使用.success):

$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');
    });
}

您確定API的內容類型為application/x-www-form-urlencoded嗎? 最好使用Angular默認的application/json 如果必須對數據進行urlencode,請使用$ httpParamSerializerJQLike服務

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

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

});

-AngularJS Param序列化器API參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM