0

我正在使用一个 ajax+php 脚本从 html 网站发送邮件。我在我的其他网站(不同的服务器)上有这个脚本,它工作正常,但现在我无法让它在我正在构建的新网站上工作。下面是调用 ajax 函数的形式:

<form id="form" enctype="multipart/form-data" method="post">
            <table id="tablecontact">
            <tr><th>Name:</th><td><input id="name" type="text" class="input" name="Name" value="" size="30" /></td></tr>
            <tr><th>E-mail:</th><td><input id="email" class="input" name="E-mail" value="" size="30" /></td></tr>
            <tr><th>Subject:</th><td><input id="subject" class="input" name="Subject" value="" size="30" /></td></tr>
            <tr><th>Message:</th><td><textarea id="message" class="input" name="Massege" cols="40" rows="5" style="max-width:700px"></textarea></td></tr> 
            <tr><td colspan="2"><center><input id="submit" type="submit" class="submit" value="Submit" onclick="submitForm();" />&nbsp;<input type="button" class="reset" value="Reset" /></center></td></tr>
            </table>
      </form>

这是ajax脚本:

function submitForm() {
if (window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();
    } else {
        xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
    }

    xmlhttp.onreadystatechange= function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {         
            document.getElementById('response').innerHTML=xmlhttp.responseText;
        }
    }
        var name=document.getElementById('name').value;
        var email=document.getElementById('email').value;
        var subject=document.getElementById('subject').value;
        var message=document.getElementById('message').value;
var parameters='name='+name+'&email='+email+'&subject='+subject+'&message='+message;
xmlhttp.open('POST','mailsend.php',true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(parameters);};

这是mailsend.php:

<?php
$pass = validEmail($_POST['email']);
            $subject = $_POST['subject']." : Contact";
            $email = $_POST['email'] ;
            $name=$_POST['name'];
            $message = $_POST['message'] ;
            $headers = "From: $name Email: $email";
if ($pass && strlen($subject)>=5 && strlen($message)>=5 && strlen($name)>=5) 
        {
            $to='MYMAIL';
            $sent = mail($to, $subject, $message, $headers) ;
            if ($sent){ 
            echo('<div id="success"><img src="ok.png" style="margin-top:3px;" /> Your message was sent.</div>');
            $hppmessage='Thanks for contacting.';
            $hppheaders='Auto Replay from: MYMAIL';
            $hppsubject='Contact message received.';
            $sent1= mail($email,$hppsubject,$hppmessage,$hppheaders,'-f MYMAIL');
            } else
            echo ('<div id="error"><img src="error.png" style="margin-top:3px;" /> Error! Please try again.') ;
        } else
        echo ('<div id="error"><img src="error.png" style="margin-top:3px;" /> Error! Please try again.') ;

?>

任何帮助将不胜感激,在此先感谢并致以最良好的祝愿。

4

1 回答 1

0

没关系,但改用 jQuery,这是该站点的链接:http: //jquery.com/。jQuery 更高效、更快!包含 jQuery 脚本文件后,将 javascript 更改为:

function submitForm(){
   var nameval    = $("#name").val();
   var emailval   = $("#email").val();
   var subjectval = $("#subject").val();
   var messageval = $("#message").val();
   $.post("mailsend.php", { name: nameval, email: emailval, subject :subjectval, message : messageval } );
}

您的 ajax 脚本来自 w3schools,这不是一个很好的教程地方,而是在这里阅读官方 jQuery 文档:http: //api.jquery.com/jQuery.post/

编辑:您的 $to 变量也不是有效的电子邮件,因此可能是您的问题。

于 2013-02-10T11:51:46.737 回答