尝试将 post 数据从 angular html 页面发送到 php 页面进行处理和电子邮件
Trying to post data from an angular html page to a php page for processing and email
我使用 angular 的时间很短,我正在尝试获取联系表以提交到设置为向我们发送邮件的域路由中的 php 文件.
我已经收到 php 邮件给我们,但是 none 的日期是从 angular 申请中继承过来的。
这是我的代码:
angular.module('demoapp')
.controller('ContactCtrl', function ($scope, $http, $templateCache) {
var method = 'POST';
var url = 'contact.php';
$scope.codeStatus = '';
$scope.add = function() {
$http({
method: method,
url: url,
data: $.param({'data' : FormData}),
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
cache: $templateCache
}).
success(function(response) {
$scope.codeStatus = response.data;
}).
error(function(response) {
$scope.codeStatus = response || 'Request failed';
});
return false;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="contact-form-wrapper">
<h2>Write Us</h2>
<form action="contact.php" method="post" enctype="text/plain">
<input class="formtop" type="text" name="name" placeholder="Name (required)">
<input class="formtop" type="text" name="mail" placeholder="Email (required)">
<input class="formlong" type="text" name="subject" placeholder="Subject" size="50">
<textarea class="formarea" name="message" placeholder="Message" size="50"></textarea>
<input class="submit-link" type="submit" value="Send">
</form>
</div>
它正在发布到这个 php 文件:
<?php
$Subject = $_POST['subject'];
$Name = $_POST['name'];
$Email = $_POST['mail'];
$Message = $_POST['message'];
date_default_timezone_set('America/Los_Angeles');
$ip_address = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$date = date ("l, F jS, Y");
$time = date ("h:i A");
$to = "dummy@email.com";
$subject = $Subject;
$msg="
Name: $Name
Email: $Email
Subject: $Subject
Message: $Message
Submitted on: $date $time
IP Address: $ip_address
Host Name: $hostname \n
";
mail($to, $subject, $msg, "From: website@traffikonline.com");
?>
这可能是我遗漏的一些非常小的问题,但我已经检查了很多地方的答案,这是我得到的最接近的答案。 Grunt 和检查员没有抛出任何关于 jscript 的错误,php 文件确实给我发了电子邮件(只是没有数据)。
谢谢!
将您的 php 更新为:
$data = file_get_contents('php://input');
$json = json_decode($data);
$Subject = $json->subject;
$Name = $json->name;
$Email = $json->mail;
$Message = $json->message;
我 运行 进入这个问题是因为我目前正在处理自己的 Angular + PHP 联系表。对我来说,你的代码中明显的一点是完全没有 ng 声明。
你的 html 中的 ng-app、ng-controller 和 ng-model 在哪里?如果没有进行数据绑定,您将无法获取数据。此外,您应该使用 ng-submit 调用控制器中定义的 "add" 函数,而不是表单操作。
<div ng-app="demoapp" class="contact-form-wrapper">
<h2>Write Us</h2>
<form name="form" ng-controller="ContactCtrl" ng-submit="form.$valid && add()" method="post" enctype="text/plain" novalidate>
<input class="formtop" type="text" name="name" placeholder="Name (required)" ng-model="input.name" required>
<input class="formtop" ng-model="input.email" type="email" name="mail" placeholder="Email (required)" required>
<input class="formlong" ng-model="input.subject" type="text" name="subject" placeholder="Subject" size="50">
<textarea class="formarea" ng-model="input.msg" name="message" placeholder="Message" size="50" required></textarea>
<input class="submit-link" type="submit" value="Send">
</form>
</div>
至于 PHP 的东西,我不太确定。但是你的 Angular 代码肯定是乱七八糟的。
我使用 angular 的时间很短,我正在尝试获取联系表以提交到设置为向我们发送邮件的域路由中的 php 文件.
我已经收到 php 邮件给我们,但是 none 的日期是从 angular 申请中继承过来的。
这是我的代码:
angular.module('demoapp')
.controller('ContactCtrl', function ($scope, $http, $templateCache) {
var method = 'POST';
var url = 'contact.php';
$scope.codeStatus = '';
$scope.add = function() {
$http({
method: method,
url: url,
data: $.param({'data' : FormData}),
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
cache: $templateCache
}).
success(function(response) {
$scope.codeStatus = response.data;
}).
error(function(response) {
$scope.codeStatus = response || 'Request failed';
});
return false;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="contact-form-wrapper">
<h2>Write Us</h2>
<form action="contact.php" method="post" enctype="text/plain">
<input class="formtop" type="text" name="name" placeholder="Name (required)">
<input class="formtop" type="text" name="mail" placeholder="Email (required)">
<input class="formlong" type="text" name="subject" placeholder="Subject" size="50">
<textarea class="formarea" name="message" placeholder="Message" size="50"></textarea>
<input class="submit-link" type="submit" value="Send">
</form>
</div>
它正在发布到这个 php 文件:
<?php
$Subject = $_POST['subject'];
$Name = $_POST['name'];
$Email = $_POST['mail'];
$Message = $_POST['message'];
date_default_timezone_set('America/Los_Angeles');
$ip_address = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$date = date ("l, F jS, Y");
$time = date ("h:i A");
$to = "dummy@email.com";
$subject = $Subject;
$msg="
Name: $Name
Email: $Email
Subject: $Subject
Message: $Message
Submitted on: $date $time
IP Address: $ip_address
Host Name: $hostname \n
";
mail($to, $subject, $msg, "From: website@traffikonline.com");
?>
这可能是我遗漏的一些非常小的问题,但我已经检查了很多地方的答案,这是我得到的最接近的答案。 Grunt 和检查员没有抛出任何关于 jscript 的错误,php 文件确实给我发了电子邮件(只是没有数据)。
谢谢!
将您的 php 更新为:
$data = file_get_contents('php://input');
$json = json_decode($data);
$Subject = $json->subject;
$Name = $json->name;
$Email = $json->mail;
$Message = $json->message;
我 运行 进入这个问题是因为我目前正在处理自己的 Angular + PHP 联系表。对我来说,你的代码中明显的一点是完全没有 ng 声明。
你的 html 中的 ng-app、ng-controller 和 ng-model 在哪里?如果没有进行数据绑定,您将无法获取数据。此外,您应该使用 ng-submit 调用控制器中定义的 "add" 函数,而不是表单操作。
<div ng-app="demoapp" class="contact-form-wrapper">
<h2>Write Us</h2>
<form name="form" ng-controller="ContactCtrl" ng-submit="form.$valid && add()" method="post" enctype="text/plain" novalidate>
<input class="formtop" type="text" name="name" placeholder="Name (required)" ng-model="input.name" required>
<input class="formtop" ng-model="input.email" type="email" name="mail" placeholder="Email (required)" required>
<input class="formlong" ng-model="input.subject" type="text" name="subject" placeholder="Subject" size="50">
<textarea class="formarea" ng-model="input.msg" name="message" placeholder="Message" size="50" required></textarea>
<input class="submit-link" type="submit" value="Send">
</form>
</div>
至于 PHP 的东西,我不太确定。但是你的 Angular 代码肯定是乱七八糟的。