我必须承认我有点困惑…我以前从未做过,而且我显然缺少一些东西
当我通过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); ?>
经过大量研究后,我发现这有点像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>
感谢所有提供帮助的人!