dongzai3139 2013-11-19 23:40
浏览 45
已采纳

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

I must admit I am a little bit confused... I have never done this before and I am apparently missing something

When I pass data via http.post to my php file I am can't seem to collect data...

Can someone tell me why this does not work?

FormData gets displayed in console log,, and the file is being written for sure.. however it looks like no data is passed..

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

    });
};

This is in my php file.. trying to write data from submitted form to a file... (just testing)..

    <?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);

    ?>
  • 写回答

2条回答 默认 最新

  • douyakan8924 2013-11-20 01:39
    关注

    After doing quite some research I discovered that this is somewhat of a php speciffic issue.. and I found answersa on these two posts..

    here: Angular HTTP post to PHP and undefined

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

    My final PHP code looks like this..

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

    I would also like to credit Mike Brant (https://stackoverflow.com/users/1529853/mike-brant) whose solution from a referenced stack post was very helpful.. I up-voted his response too.

    My angular app code looks something like this... and it is a great improvement from the original one thanks to artur grzesiak (https://stackoverflow.com/users/2956115/artur-grzesiak)

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

    Finally,, the HTML form that was used to submit this form looks something like this...

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

    Thanks to everyone who helped!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示