Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';我的process.php有什么问题';这不是导致我的表格发送的原因吗?_Javascript_Php_Jquery_Ajax_Forms - Fatal编程技术网

Javascript 什么';我的process.php有什么问题';这不是导致我的表格发送的原因吗?

Javascript 什么';我的process.php有什么问题';这不是导致我的表格发送的原因吗?,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我构建了一个表单,它通过Ajax提交,然后用PHP中的mail()函数进行处理。表单验证和表单提交工作完美(我可以控制台记录数据并接收成功消息),但我没有收到来自表单的任何电子邮件。我假设是process.php 这是我第一次这样做,所以任何指针/代码的改进都将不胜感激 Javascript: var name = $('#name').val(); var email = $('#email').val(); var message = $('#message').val(); var da

我构建了一个表单,它通过Ajax提交,然后用PHP中的mail()函数进行处理。表单验证和表单提交工作完美(我可以控制台记录数据并接收成功消息),但我没有收到来自表单的任何电子邮件。我假设是process.php

这是我第一次这样做,所以任何指针/代码的改进都将不胜感激

Javascript:

var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();

var dataString = 'name=' + name + '&email=' + email + '&message=' + message;
$.ajax({
  type: "POST",
  url: "process.php",
  data: dataString,
  success: function () {
    alert('success');
  }
});
PHP:


我认为问题确实存在于php mail()方法中。 只需通过注释掉mail()调用,并将其替换为

echo 'I should be sending mail now!';
exit;
然后将ajax调用更改为:

$.ajax({
  type: "POST",
  url: "process.php",
  data: dataString,
  success: function (response) {
    alert(response);
  }
});
现在将表单发送到服务器,并查看警报框中出现的内容。 如果您得到了预期的字符串,那么您确实应该设置一个smtp服务器,以便发送邮件。 另一种选择是使用外部邮件服务器,但它要求您在其他地方拥有适当的电子邮件帐户


这里有很多脚本,比如phpmailer。

多亏了dibs和dabs的帮助,我成功地解决了这个问题

正如预期的那样,Ajax一切都很好。 电子邮件没有发送,因为它在本地运行,没有使用我的服务器邮件PHP。 而且表单中的数据没有被引用,因此会返回空白电子邮件

所以,这就是最终起作用的原因:

<?php
  $myemail = "name@example.com";
  $subject = "Subject";
  $name = $_POST['name'];
  $email = $_POST['email'];
  $message = $_POST['message'];

  $body = "
    Name: $name 
    Email: $email
    Message: $message
  ";

  mail($myemail, $subject, $body);
?>


您是否设置了邮件服务器,PHP还将如何发送电子邮件?您没有首先检索值…使用$_POST['message']等…@adeneo我不知道那是什么,请您解释一下?请显示您如何使用它的所有代码/表单jQuery@Jake-实际发送电子邮件,您必须有一个能够发送电子邮件的Web服务器,就像设置sendmail或任何其他可以发送电子邮件的电子邮件发送软件一样。PHP不发送电子邮件,
mail()
函数使用任何默认的电子邮件发送软件来发送电子邮件。Ajax位和发送邮件肯定在工作(我现在正在接收电子邮件),但电子邮件是空的。我认为我没有正确地引用数据。这是一段时间以前的事了,但我想我会回来评论一下-你是对的,使用swiftmailer解决了我所有的问题。
<?php
  $myemail = "name@example.com";
  $subject = "Subject";
  $name = $_POST['name'];
  $email = $_POST['email'];
  $message = $_POST['message'];

  $body = "
    Name: $name 
    Email: $email
    Message: $message
  ";

  mail($myemail, $subject, $body);
?>