0

我的 php 文件后出现问题。

我已经测试了这个(下)并且它工作正常

<?php

$fto = 'myemail@gmail.com';
$fsubject = 'Test';
$fmessage = 'Message';
$fheaders = 'From: test@test.com' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

mail($fto, $fsubject, $fmessage, $fheaders);

?>

但我正在尝试使用 ajax 为我发送它,但由于某种原因它不起作用:c

我试过这个:

(PHP)

<?php

$fto = 'myemail@gmail.com';
$fsubject = $_POST['subj'];
$fmessage = $_POST['all'];
$fheaders = 'From: ' . $_POST['email'] . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

mail($fto, $fsubject, $fmessage, $fheaders);

?>

(jQuery)

$("#form").submit(function(e){
  e.preventDefault();
  var name = $("#name").val();
  var email = $("#email").val();
  var text = $("#message").val();

  var subj = "Novo Parceiro - " + name;

  var all = "Nome : " + name + "\nE-mail : " + email + "\nMensagem : " + text;

  var dataString = name + email + text + all + subj;

  if (name.length > 3){
    $.ajax({
    type: "POST",
    url: "/scripts/mailform.php",
    data: dataString,
    success: function(){
       $('#form').trigger("reset");
    }
    });
  } else{
       $('#errorform').slideDown(200);
  }

  return false;
});
4

3 回答 3

2

这是因为您没有正确构造字符串:

var dataString = "name="+name+"&email="+email+"&text="+text+"&all="+all+"&subj="+subj;

您收到的帖子变量现在可以工作了。

附带说明一下,请对该$_POST[]输入进行某种类型的验证,否则它可以被注入并接管以注入服务器端代码,这会产生一些负面后果。

于 2013-08-02T21:56:38.510 回答
0

在您的 jQuery ajax 调用中,将 data 参数更改为:

if (name.length > 3){
  $.ajax({
    type: "POST",
    url: "/scripts/mailform.php",
    data: {name:name, email:email,text:text,all:all,subj:subj};
    success: function(){
       $('#form').trigger("reset");
    }
});

jquery 将负责将提供的对象编码为application/www-form-urlencoded格式

于 2013-08-02T21:58:32.363 回答
0

如果您已经阻止了默认操作,则不需要返回 false ......此外,您可以使用 serialize 方法简化此功能,并将消息格式(即"Nome : " + name + etc.)移动到服务器:

$("#form").submit(function(e){
  e.preventDefault();

  var $dataString = $(this).serialize();

        $.ajax({
            type: "POST",
            url: "/scripts/mailform.php",
            data: $dataString,
            success: function(data) {
               $(this).trigger("reset");
            }
        });

});
于 2013-08-02T22:07:24.203 回答