【问题标题】:Implementing $http.post in angular JS with PHP使用 PHP 在 Angular JS 中实现 $http.post
【发布时间】:2016-09-08 10:34:48
【问题描述】:

我正在尝试将消息、姓名和电子邮件从我的索引页面上的联系表单发送到我自己的电子邮件,但遇到了一些问题。我正在使用 AngularJS。现在,当我在表单上单击提交时,它只是出现了一个加载屏幕,没有其他任何事情发生。这是我目前拥有的:

HTML:

<form ng-submit="save()" class="contactForm" name="form" ng-hide="loaded" ng-controller="formCtrl">
            <input class="input" required="required" type="text" name="name" placeholder="Your Name" ng-model="message.name" />
            <input class="input email" required="required" type="email" name="email" value="" placeholder="Your Email" ng-model="message.email" /><br />
            <textarea class="textarea" rows="5" required="required" placeholder="Your Message" ng-model="message.text" ></textarea>
            <button class="btn green">Send Message</button>
        </form>

JS:

$scope.save = function () {
      $scope.loaded = true;
      $scope.process = true;
      $http.post('sendemail.php', $scope.message).success(function () {
          $scope.success = true;
          $scope.process = false;
      });
    };

PHP (sendemail.php):

$rest_json = file_get_contents("php://input");
$_POST = json_decode($rest_json, true);

$email = $request->message.email;
$name = $request->message.name;
$message = $request->message.text;

$from="From: $name<$email>\r\nReturn-path: $email"; 
$subject="Message sent using your contact form"; 
mail("myemail@gmail.com", $subject, $message, $from); 

我也试过下面的php:

var_dump($_POST);die();
$_POST = json_decode($rest_json, true);

$email = $_POST["message.email"];             //$request->message.email;
$name = $_POST["message.name"];                     //$request->message.name;
$message = $_POST["message.text"];          //$request->message.text;

$from="From: $name<$email>\r\nReturn-path: $email"; 
$subject="Message sent using your contact form"; 
mail("myemail@gmail.com", $subject, $message, $from);

php应该和javascript在同一个文件夹中吗?任何帮助将非常感激!非常感谢。

【问题讨论】:

  • var_dump 行给你什么?此外 - 您可能已经意识到这一点,但紧随其后的 die(); 将阻止您的第二个 PHP 示例中的其他任何内容运行。
  • 我收到 404 错误:
  • “POST /sendemail.php”错误(404):“未找到”
  • 这意味着Angular中的http函数找不到你的sendemail.php文件。确保文件路径正确(如果需要,可以将其设为绝对路径)并再次运行。
  • 谢谢,我猜这应该很明显。但是现在似乎 var_dump 没有给出任何行?联系表格只是停留在加载位置,我在 CMD 中没有收到任何错误

标签: javascript php angularjs forms http-post


【解决方案1】:

您发出 POST ajax 请求,因此为了使用您尝试传输到 PHP 应用程序的数据,您需要在 $_POST 数组中找到它。更多详情here

更具体地说,您不需要此行$rest_json = file_get_contents("php://input");

您只需要从$_POST 获取数据。只需让var_dump($_POST);die(); 调试其中的内容以及您需要准确解码的内容。

【讨论】:

  • 谢谢,但我似乎仍然无法让它工作。我尝试了一些不同的东西。这是我目前拥有的(php):
  • var_dump($_POST);die(); $_POST = json_decode($rest_json, true); $email = $_POST["message.email"]; //$request->message.email; $name = $_POST["message.name"]; //$request->message.name; $message = $_POST["message.text"]; //$request->message.text; $from="发件人:$name\r\n返回路径:$email"; $subject="使用您的联系表格发送的消息"; mail("myemail@gmail.com", $subject, $message, $from);
  • 抱歉格式错误,我将使用更新的 php.ini 编辑问题。 php应该和js在同一个文件夹吗?
猜你喜欢
  • 2017-09-14
  • 2017-10-15
  • 1970-01-01
  • 2017-03-10
  • 2016-03-29
  • 2020-11-26
  • 2020-01-28
  • 2016-12-28
  • 2013-11-07
相关资源
最近更新 更多