Angularjs - 表单提交的数据没有发布? [英] Angularjs - Form Post Data Not Posted?

查看:109
本文介绍了Angularjs - 表单提交的数据没有发布?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须承认我是一个有点困惑......我从来没有这样做之前,我似乎失去了一些东西。

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

谁能告诉我,为什么不起作用?

FORMDATA被显示在控制台日志,,并且文件被肯定的书面..但它看起来像没有数据传递。

  $ scope.submitForm =功能(){
    FORMDATA = $ scope.form;    $ http.post('form2.php',JSON.stringify(FORMDATA))。成功(函数(){        的console.log(FORMDATA);
        //window.location.href =form2.php数据=?+ JSON.stringify(FORMDATA);    });
};

这是在我的PHP文件..试图从提交的表单数据写入一个文件...(只是测试)。

 < PHP        $文件='form2.txt';
        $数据= json_de code($ _ REQUEST ['数据'],真实);        //打印('< pre>');
        //的print_r($数据);
        //打印('< / pre>');        $ data_insert =名称:。 $数据['名字']。
                    电子邮件。 $数据['EMAILADDRESS']。
                    说明。 $数据['textareacontent']。
                    , 性别: 。 $数据['性别']。
                    是会员。 $数据['成员'];        //打印$ data_insert;        的file_put_contents($文件,$ data_insert,FILE_APPEND | LOCK_EX);    ?>


解决方案

做得很经过一番研究,我发现这是一个PHP speciffic问题有点..和我发现answersa这两个职位。

在这里:
角HTTP发布到PHP和undefined

在这里:
<一href=\"http://sebgoo.blogspot.ca/2013/05/angularjs-post-data-to-php.html\">http://sebgoo.blogspot.ca/2013/05/angularjs-post-data-to-php.html

我最后的PHP code看起来是这样的。

  $文件='form2.txt';        $ POSTDATA =的file_get_contents(PHP://输入);
        $数据= json_de code($ POSTDATA,真正的);
        $ data_insert =名称:。 $数据['名字']。
                电子邮件。 $数据['EMAILADDRESS']。
                说明。 $数据['textareacontent']。
                , 性别: 。 $数据['性别']。
                ,是一个成员。 $数据['成员'];
        //打印$ data_insert;        的file_put_contents($文件,$ data_insert,FILE_APPEND | LOCK_EX);

我也想迈克信贷布兰特(<一个href=\"http://stackoverflow.com/users/1529853/mike-brant\">http://stackoverflow.com/users/1529853/mike-brant)从引用的叠后,其解决方案是非常有益的。我起来,投他的回应了。

我的角度应用code看起来是这样的......,它是从原来的感谢了很大的改进,以阿图尔grzesiak(<一个href=\"http://stackoverflow.com/users/2956115/artur-grzesiak\">http://stackoverflow.com/users/2956115/artur-grzesiak)

  VAR应用= angular.module('对myApp',[]);app.controller('FormCtrl',函数($范围,$ HTTP){VAR FORMDATA = {
    姓:默认,
    EMAILADDRESS:默认,
    textareacontent:默认,
    性别:默认,
    成员:假的
};
$ scope.submitForm =功能(){    $ HTTP({        网址:form2.php
        数据:$ scope.form,
        方法:POST,
        标题:{内容类型:应用程序/ x-WWW的形式urlen codeD;字符集= UTF-8'}    })。成功(功能(数据){        的console.log(OK,数据)    })错误(功能(错误){ERR,执行console.log(ERR)})
};});

最后,,被用于提交这种形式的HTML表单看起来是这样的...

 &LT; D​​IV NG-应用=对myApp&GT;    &LT;形式NG控制器=FormCtrlNG提交=submitForm()&GT;
        名字:LT; BR /&GT;&LT;输入类型=文本NG模型=form.firstname&GT; &LT; BR /&GT;&LT; BR /&GT;
        电邮地址:&LT; BR /&GT;&LT;输入类型=文本NG模型=form.emailaddress&GT; &LT; BR /&GT;&LT; BR /&GT;
        说明:&LT; BR /&GT; &LT; textarea的行数=3COLS =25NG-模式=form.textareacontent&GT;&LT; / textarea的&GT;
            &LT; BR /&GT;
        &LT;输入类型=电台NG-模式=form.genderVALUE =女/&GT;女...
        &LT;输入类型=电台NG-模式=form.genderVALUE =男/&GT;男&LT; BR /&GT;
            &LT; BR /&GT;
        &LT;输入类型=复选框NG模型=form.member/&GT;已经是会员
            &LT; BR /&GT;
        &LT;输入类型=提交ngClick =提交&GT;
    &LT; /表及GT;&LT; / DIV&GT;

感谢大家谁帮助!

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

    ?>

解决方案

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 (http://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 (http://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!

这篇关于Angularjs - 表单提交的数据没有发布?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆