AJAX接触形式不发送POST数据到PHP

问题描述:

我做了一个HTML表单宽度AJAX:AJAX接触形式不发送POST数据到PHP

function confirmSendMail() { 

    $(".send_contact").click(function(event){ 

     event.preventDefault(); 

     var nome = $("#inputName").val(); 
     var email = $("#inputEmail").val(); 
     var telefono = $("#inputTelefono").val(); 
     var messaggio = $("#message").val(); 

     $.ajax({ 

      type: "POST", 

      url: "send.php", 

      data: "nome=" + nome + "&email=" + email + "&telefono=" + telefono + "&messaggio=" + messaggio, 

      success: function(msg) { 
       alert('messaggio inviato!') 
      }, 

      error: function() { 
       alert("Si e' verificato un errore imprevisto..."); 
      } 

     }); 

    return false;  

    }); 

} 

警报确认我的邮件被发送出去,PHP引擎发送电子邮件...但它是空的,因为POST不发送数据到PHP:

<?php 
require 'PHPMailer-master/class.phpmailer.php'; 

$mail = new PHPMailer; 

$nome = $_POST['inputName']; 
$email = $_POST['inputEmail']; 
$telefono = $_POST['inputTelefono']; 
$messaggio = $_POST['message']; 

$mail->From = $email; 
$mail->FromName = $email; 
$mail->AddAddress('[email protected]');    // Add a recipient 

$mail->WordWrap = 50;         // Set word wrap to 50 characters 
/* $mail->AddAttachment('/var/tmp/file.tar.gz');   // Add attachments 
$mail->AddAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name */ 
$mail->IsHTML(true);         // Set email format to HTML 

$mail->Subject = 'email dal form acfmavvocati.it'; 
$mail->Body = 'nome: ' . $nome . '<br /><br />email: ' . $email . '<br /><br />telefono: ' . $telefono . '<br /><br />messaggio: ' . $messaggio; 
/* $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; */ 

if($mail->Send()) { 
    echo "works"; 
    exit; 
} else { 

    echo "doesn't work"; 
    exit; 

} 

?> 

我尝试了许多解决方案,它带给我疯了。

在此先感谢您的帮助。

问题出现在您的PHP文件中。

应该

$nome = $_POST['nome']; 
$email = $_POST['email']; 
$telefono = $_POST['telefono']; 
$messaggio = $_POST['messaggio']; 

因为你已经宣布在AJAX数据的名称

data: "nome=" + nome + "&email=" + email + "&telefono=" + telefono + "&messaggio=" + messaggio, 
+0

你是对的!正如我通常在表单中使用“行动”一样,我并不擅长ajax发布数据。非常感谢! – mimelaine 2015-03-08 21:34:14

你检查这是不是在你的Ajax数据串设置错误$ _ POST键:

$nome = $_POST['inputName']; 
$email = $_POST['inputEmail']; 
$telefono = $_POST['inputTelefono']; 
$messaggio = $_POST['message']; 

将它们更改为:

$nome = $_POST['nome']; 
$email = $_POST['email']; 
$telefono = $_POST['telefono']; 
$messaggio = $_POST['messagio'];