2013-04-02 1 views
2

question을 기반으로 연락처 양식 스크립트를 다시 작성해야했습니다. 목표는 send이라는 레이블이 지정된 보내기 단추를 사용하는 것입니다. clickick 후 PHP 스크립트가 완료 될 때까지 sending가 표시되어야합니다. 완료되면 sent이 표시되어야합니다. 내 간단한 형태 그게 전부연락 양식에 오류가 있습니다. jquery ajax를 통해 제출하십시오.

: 여기

<form id="contactForm" action="mail.php" method="post"> 
    <input type="text" id="name" name="name" placeholder="Name" required><br /> 
    <input type="text" id="email" name="email" placeholder="Mail" required><br /> 
    <textarea name="message" id="message" placeholder="Nachricht" required></textarea><br /> 
    <button name="submit" type="submit" id="submit">send</button> 
</form> 

는 라벨 변경하고 아약스 제출에 대한 JQuery와 스크립트입니다.

<script> 
      $(init); 
      function init() { 
       $('#contactForm').submit(submitForm); 
      } 
      function submitForm() { 
       var contactForm = $(this); 
       if (!$('#name').val() || !$('#email').val() || !$('#message').val()) { 
        $('#submit').html('error'); 
       } else { 
        $('#submit').html('sending'); 
        $.ajax({ 
         url: contactForm.attr('action') + "?ajax=true", 
         type: contactForm.attr('method'), 
         data: contactForm.serialize(), 
         success: submitFinished 
        }); 
       } 
       return false; 
      } 
      function submitFinished(response) { 
       response = $.trim(response); 
       if (response == "success") { 
        $('#submit').HTML = ('sent'); 
       } else { 
        $('#submit').html('error'); 
       } 
      } 
     </script> 

mail.php :

<?php 

define("RECIPIENT_NAME", "John Doe"); 
define("RECIPIENT_EMAIL", "[email protected]"); 
define("EMAIL_SUBJECT", "Subject"); 

$success = false; 

$name = isset($_POST['name']) ? preg_replace("/[^\.\-\' a-zA-Z0-9]/", "", $_POST['name']) : ""; 
$email = isset($_POST['email']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email']) : ""; 
$message = isset($_POST['message']) ? preg_replace("/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message']) : ""; 

if ($name && $email && $message) { 
    $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">"; 
    $headers = "Von: " . $name . " <" . $email . ">"; 
    $success = mail($recipient, EMAIL_SUBJECT, $message, $headers); 
} 

if (isset($_GET["ajax"])) { 
    echo $success ? "success" : "error"; 
} else { 
//add html for javascript off user 
} 
?> 

그것의 올바른 제출하고 난 메일을 얻을하지만 난 sending에 붙어 sent .Its에 레이블을 변경 나던. 내 코드에 어떤 생각이나 제안이 잘못 되었습니까? 당신이 다른 곳에이 같은

안부 dennym

+0

Firebug 또는 Dev Tools 등에서 요청을 볼 때 출력은 무엇입니까? –

+1

HTML을 html로 만들어보십시오 – user1048676

+0

또한 응답을 시도하여 응답이 성공 – user1048676

답변

3

오류는이 라인에 당신이

$('#submit').html('sent'); 
+0

인지 확인하십시오 .- 일부 자동 완성으로 인해 발생해야합니다. 그러나 이것이 도움이되었습니다. –

2
$('#submit').HTML = ('sent'); 

$('#submit').html('sent'); 

을해야합니다.

$('#submit').HTML = ('sent'); 

변경에 있음 :

2

변경

$('#submit').HTML = ('sent'); 

에 :

$('#submit').html('sent'); 
0 귀하의 기능에있는

submitFinished();

관련 문제