Angularjs - 表单提交的数据没有发布? [英] Angularjs - Form Post Data Not Posted?
问题描述
我必须承认我是一个有点困惑......我从来没有这样做之前,我似乎失去了一些东西。
当我通过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这两个职位。
在这里:
<一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; DIV 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屋!