如何使用Angular $ http将数据POST到PHP

时间:2015-02-17 22:38:33

标签: javascript php angularjs

有关此问题的大量话题,我保证我已经尝试了很多(全天)。

这是我的代码:



app.controller('contactsController', function($scope, $rootScope, dataService, $http) {

        $rootScope.currentPage = "contact";

        $scope.postData = [];

        $scope.runScript = function() {
            $http({
                url: "post.php",
                method: "POST",
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                data: $.param({postData:$scope.postData})
            }).success(function(data, status, headers, config) {
                $scope.data = data;
            }).error(function(data, status, headers, config) {
                $scope.status = status;
            });

        };
    });

<form name="contactForm" method="post" ng-submit="runScript()">
            <div class="col-sm-10">
                <div class="input-group">
                    <span class="input-group-addon" id="basic-addon1">E-mail Address</span>
                    <input ng-model="{{postData.email}}" name="email" class="form-control" placeholder="johnsmith@example.com" aria-describedby="basic-addon1" required>
                </div>
            <br>
                <div class="input-group">
                    <span class="input-group-addon" id="basic-addon1">Message</span>
                    <textarea ng-model="{{postData.message}}" name="inputMessage" class="form-control"></textarea>
                </div>
            </div>
            <div class="col-sm-2">
                <button type="submit" class="btn btn-default">Send</button>
            </div>
        </form>
        {{data}} and {{status}}
&#13;
&#13;
&#13;

$inputData = file_get_contents("php://input");

$inputData = json_decode($inputData);

$email = $inputData->email;

echo $email;

现在我可能犯了一些错误,同时试图让它开始工作,从我之前的事情开始 - 我没有得到任何错误,但我也没有取得任何成功 - 我和#39;一整天都在这里!!!!谢谢!

2 个答案:

答案 0 :(得分:1)

Angular以jSON格式发布数据,而PHP本身并不使用这种格式。你必须阅读和json解码输入,如下所示:

// get the raw POST data
$inputData = file_get_contents("php://input");

// this returns null if not valid json
$inputData = json_decode($inputData);

答案 1 :(得分:0)

我可能错了,但如果你只使用POST,你应该在_POST变量中找到你的数据。只有在提交PUT请求时才需要使用file_get_contents(&#34; php:// input&#34;)。

此外,您正在提交密钥postData,并且您正在尝试阅读 - &gt;电子邮件..