2017-03-18 4 views
0

私はHTMLで書かれたフォーム、AJAXコードとWebサイトの管理者にフォームの情報を電子メールで送るPHPファイルを持っています。問題は、FireBugアドオンの「コンソール」タブでコードを調べると、すべて私が期待している通りです。応答は「OK My Friend」です(電子メールが正常に送信された場合)。しかし、正確なresponseまたはresponseTextをこれらの2行で表示したいときは、alert(this.responseText);alert(this.response);の開いている警告ウィンドウには、どちらの場合も "undefined"と表示されます。私はPHPファイルが正しく応答を送信していることを意味し、FireBugはそれを証明します。しかし、私はthis.responseまたはthis.responseTextで応答を得ることができません。あなたの意見には何が問題なのですか?私は私の質問の可能な重複をチェックしたが、どれも助けにならない。ここ
は私の完全なコードです:
PHP:
AJAX使用時のPHPファイルからの "未定義"応答とresponseText

<?php 
$to = "[email protected]"; 
$sendersName = $_POST[ 'name' ]; 
$sendersEmail = $_POST[ 'email' ]; 
$message = "Name : " . $sendersName . "\n"; 
$message .= "Email : " . $sendersEmail . "\n"; 
$message .= "Message : " . $_POST[ 'message' ] . "\n"; 
$header = "From:[email protected] \r\n"; 
$header .= "Cc:[email protected] \r\n"; 
$header .= "Bcc:[email protected] \r\n"; 
$result = mail($to, "ارسال پیام به وبسایت تیام نت", $message, $header); 
if ($result == true) { 
    echo("OK My Friend"); 
} else { 
    echo("email not sent"); 
} 
?> 

HTMLフォーム:

<div class="col-sm-5" id="contact_form"> 
    <form action="" method="post"> 
    <div class="form-group"> 
     <label for="name">نام و نام خانوادگی</label> 
     <input type="text" class="form-control" name="name" placeholder="نام و نام خانوادگی خود را وارد کنید." id="name"> 
     <label class="error" for="name" id="name_error">وارد نمودن نام و نام خانوادگی اجباری است.</label> 
    </div> 
    <div class="form-group"> 
     <label for="email">ایمیل</label> 
     <input type="email" class="form-control" name="email" placeholder="آدرس ایمیل خود را وارد کنید." id="email"> 
     <label class="error" for="email" id="email_error">وارد نمودن ایمیل اجباری است.</label> 
    </div> 
    <div class="form-group"> 
     <label for="message">پیام</label> 
     <input type="text" name="message" class="form-control" placeholder="پیام خود را بنویسید." id="message"> 
     <label class="error" for="message" id="message_error">وارد نمودن پیام اجباری است.</label> 
    </div> 
    <div class="form-group"> 
     <input type="submit" name="submit" value="ارسال" id="submit" class="center-block btn btn-primary"> 
    </div> 
    </form> 
</div> 


AJAX:

$(function() { 
    "use strict"; 
    $('.error').hide(); 
    $("input#submit").click(function() { 
     // validate and process form here 

     $('.error').hide(); 
     var name = $("input#name").val(); 
     if (name === "") { 
      $("label#name_error").show(); 
      $("input#name").focus(); 
      return false; 
     } 
     var email = $("input#email").val(); 
     if (email === "") { 
      $("label#email_error").show(); 
      $("input#email").focus(); 
      return false; 
     } 
     var message = $("input#message").val(); 
     if (message === "") { 
      $("label#message_error").show(); 
      $("input#message").focus(); 
      return false; 
     } 
     var dataString = 'name=' + name + '&email=' + email + '&message=' + message; 
     alert(dataString); 
     $.ajax({ 
      type: "POST", 
      url: "sendMessage.php", 
      data: dataString, 
      success: function() { 
       alert(this.responseText); 
       alert(this.response); 
       if (this.responseText === "OK My Friend") { 
        $('#contact_form').html("<div id='message'></div>"); 
        $('#message').html("<h2>پیام شما ثبت شد!</h2>") 
         .append("<p>همکاران ما به زودی با شما تماس خواهند گرفت.</p>") 
         .hide() 
         .fadeIn(1500, function() { 
          $('#message').append("OK"); 
         }); 
       } else { 
        //$('#contact_form').html("<div id='message'></div>"); 
        //$('#message').html(this.responseText); 
       } 
      } 
     }); 
     return false; 
    }); 
}); 

答えて

1

this.responseTextthis.responseはあなたのJavaScriptとの意志で定義されることはありませんコンソールに未定義のエラーがスローされました。サーバーからデータを取得するには、success: function

に変更します。
success: function (data) { 
    alert(data); // the response from the server 
関連する問題