0

私は 1 つの ajax + php スクリプトを使用して、html Web サイトからメールを送信しています。私は他の Web サイト (別のサーバー) でこのスクリプトを使用しており、正常に動作していますが、現在構築中の新しい Web サイトで動作させることができません。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 からのものです。代わりに、http://api.jquery.com/jQuery.post/ の公式の jQuery ドキュメントを読んでください

編集:また、 $to 変数は有効な電子メールではないため、問題になる可能性があります。

于 2013-02-10T11:51:46.737 に答える