javascript - 我正在尝试通过 Angular 发送电子邮件。我是否以正确的方式处理这个问题?

标签 javascript php angularjs

我只是想学习一些新东西。我希望能够使用 Angular 和 php 发送电子邮件。我正在将表单数据转换为对象。然后我想将此对象作为变量发送并将数据发送到 php 文件。我能够创建变量,但我不相信 php 文件中设置了数据。我在这里缺少什么?

angular.module('app', []);
var vm = this;

var url = '/contact-form-handler.php';
vm.codeStatus = "";
vm.form = {};

vm.submit = function($event) {

  $event.preventDefault();

  console.log(this.form);
  $http({
    method: "POST",
    url: url,
    data: vm.form,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  }).
  success(function(result) {
    console.log(result);
    console.log('hit');
  }).
  error(function(result) {
    console.log('error');
  });
  return false;

};
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<?php

header('Access-Control-Allow-Origin: *');


if (isset($_POST["data"])) {

	$from = 'Portfolio';
	$to = 'rafael.heard@gmail.com';
    $subject = 'Portfolio Inquiry';
	$body = $_POST['data'];


	mail($to, $subject, $body, $from);

    $result = 'mail sent';
	
}else{
	$result =  'not set';
}
?>

<div ng-app="app" ng-controller="MainController as main">
  <form role="form" name="contactForm" ng-submit="main.submit($event)" required novalidate>
    <div class="form-groups">
      <div class="group">
        <input type="text" name="username" ng-model="main.form.name" placeholder="Name (required)" required />
      </div>

      <div class="group">
        <input type="email" name="userEmail" ng-model="main.form.email" placeholder="Email (required)" required />
      </div>

      <div class="group">
        <textarea type="text" name="message" ng-model="main.form.message" ng-minlength="10" rows="10" required></textarea>
      </div>

      <button>Send</button>
    </div>
  </form>

最佳答案

我想出了这个。我改变了我的 php 文件和 Angular http.我序列化了该对象。

    var url = 'contact-form-handler.php';
    vm.codeStatus = "";
    vm.form = {};

    vm.submit = function($event) {

        // $event.preventDefault();
        console.log($.param(vm.form));

        $http({
            method: "POST",
            url: url,
            data: $.param(vm.form),
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).
        success(function(result) {
            console.log(result);

        }).
        error(function(data) {
            console.log('not sent');
        });
        return false;

    };



}]);
<?php

header('Access-Control-Allow-Origin: *');

if (isset($_POST["subject"])) {


    $name = $_POST['name'];
    $subject = $_POST['subject'];
    $from = $_POST['email'];
    $message = $_POST['message'];
	$to = 'rafael.heard@gmail.com';


	mail($to, $subject, $message, $from);
    

}else{
	echo 'not set';
}
?>

关于javascript - 我正在尝试通过 Angular 发送电子邮件。我是否以正确的方式处理这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36410194/

相关文章:

angularjs - 修改 Accordion 使其表现得像 table 一样

javascript - 为什么我在 http 之后在 angularjs 变量中得到空值

javascript - 使用 jquery 中的复选框添加值?

javascript - 无法使用 angular.js 执行 Controller 功能

javascript - Angularjs 访问另一个工厂中的方法

php - 如果不需要字段,Laravel 不会验证

php - 如何从 codeigniter-query 创建表?

javascript - 将元素的宽度设置为等于监视器大小而不改变缩放

Javascript > 运算符在扩展中不起作用

PHP 和 SQL - 数据库过载