一尘不染

Angularjs-表单发布数据未发布?

angularjs

我必须承认我有点困惑…我以前从未做过,而且我显然缺少一些东西

当我通过http.post将数据传递到我的php文件时,我似乎无法收集数据…

有人可以告诉我为什么这行不通吗?

FormData会显示在控制台日志中,并且可以确定正在写入文件。但是,看起来好像没有数据传递。

$scope.submitForm = function() {
    formData = $scope.form;

    $http.post('form2.php', JSON.stringify(formData)).success(function(){

        console.log(formData);
        //window.location.href = "form2.php?data=" + JSON.stringify(formData);

    });
};

这是在我的php文件中。试图将提交表单中的数据写入文件中(只是测试)。

    <?php

        $file = 'form2.txt';
        $data = json_decode($_REQUEST['data'],true);

        //print( '<pre>' );
        //print_r ($data);
        //print( '</pre>' );

        $data_insert = "Name: " . $data['firstname'] .
                    ", Email: " . $data['emailaddress'] . 
                    ", Description: " . $data['textareacontent'] . 
                    ", Gender: " . $data['gender'] . 
                    ", Is Member: " . $data['member'];

        //print $data_insert;

        file_put_contents($file, $data_insert, FILE_APPEND | LOCK_EX);

    ?>

阅读 212

收藏
2020-07-04

共1个答案

一尘不染

经过大量研究后,我发现这有点像php特有的问题..我在这两篇文章中找到了Answersa。

此处:http :
//sebgoo.blogspot.ca/2013/05/angularjs-post-data-to-
php.html

我最终的PHP代码如下所示。

        $file = 'form2.txt';

        $postdata = file_get_contents("php://input");
        $data = json_decode($postdata, true);


        $data_insert = "Name: " . $data['firstname'] .
                ", Email: " . $data['emailaddress'] . 
                ", Description: " . $data['textareacontent'] . 
                ", Gender: " . $data['gender'] . 
                ", Is a member: " . $data['member'];


        //print $data_insert;

        file_put_contents($file, $data_insert, FILE_APPEND | LOCK_EX);

我还要感谢Mike Brant,其引用的堆栈帖子中的解决方案非常有帮助。.我也投票赞成他的回答。

我的有角度的应用程序代码看起来像这样…由于arturgrzesiak,它与原始代码相比有了很大的改进。

var app = angular.module('myApp', []);

app.controller('FormCtrl', function ($scope, $http) {

var formData = {
    firstname: "default",
    emailaddress: "default",
    textareacontent: "default",
    gender: "default",
    member: false
};


$scope.submitForm = function() {

    $http({

        url: "form2.php",
        data: $scope.form,
        method: 'POST',
        headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}

    }).success(function(data){

        console.log("OK", data)

    }).error(function(err){"ERR", console.log(err)})
};

});

最后,用于提交此表单的HTML表单如下所示:

<div ng-app="myApp">

    <form ng-controller="FormCtrl" ng-submit="submitForm()">
        First name:    <br/><input type="text" ng-model="form.firstname">    <br/><br/>
        Email Address: <br/><input type="text" ng-model="form.emailaddress"> <br/><br/>
        Description:<br/> <textarea rows="3" cols="25" ng-model="form.textareacontent"></textarea>
            <br/>
        <input type="radio" ng-model="form.gender" value="female" />Female ...
        <input type="radio" ng-model="form.gender" value="male" />Male <br/>
            <br/>
        <input type="checkbox" ng-model="form.member" />Already a member
            <br/>
        <input type="submit" ngClick="Submit" >
    </form>

</div>

感谢所有提供帮助的人!

2020-07-04