Nasıl bir ajax geri arama formu sıfırlarım?

8 Cevap php

Ben basit ajax kullanarak bir form gönderme ve formun üzerinde bir div sonuçları dönen. Sorun formu teslim ve doğrulandıktan sonra, ben bir teşekkür size göstermek ve onlar sadece tekrar gönder düğmesine basmayın böylece formunu sıfırlamak istiyorsanız ... bunu yapmak için doğru kodu bulmak gibi olamaz olmasıdır. ..

<form id="myForm" target="sendemail.php" method="post">
<div id="results"></div>
<input type="text" name="value1">
<input type="text" name="value2">
<input type="submit" name="submit">
</form>

Yani, benim sendemail.php doğrulama hataları ve başarı mesajları sorunsuz # sonuçlarında görünür.

Ben bir javascript form sıfırlama komutu geri göndermeye çalıştığınızda Ama ..., çalışmıyor. Ben sadece yanlış sözdizimi kullanıyorum eğer sorun yoksa eğer öyleyse ben bilmiyorum bir AJAX geri olduğundan doğal olarak ben kaynak kodu göremiyorum.

echo "<p>Thank you. Your message has been accepted for delivery.</p>";
echo "<script type=\"text/javascript\">setTimeout('document.getElementById('myForm').reset();',1000);</script>";

Herhangi bir fikir uzmanları?

8 Cevap

First of all

değişim

<form id="myForm" target="sendemail.php" method="post">

karşı

<form id="myForm" onsubmit="return doSend();">


With pure javascript you can do these:

HTML boş script etiket koymak:

<script type="text/javascript" id="request"></script>

javascript yapın:

function $(_){
    return document.getElementById(_);
}
function renderMessage(msg){
    $("results").innerHTML = msg;
}
function resetForm(){
    $("myForm").reset();
}
function doSend(){
    //only for **GET** request
    $("request").src = "sendemail.php?value1=xx&value2==yy";
    return false;
}

PHP döner:

renderMessage("<p>Thank you.</p>");resetForm();

Bu php bir javascript geri arama neden olacaktır.


With jQuery

sadece eklemek

function doSend(){
    $("#results").load("sendemail.php",{value1:"xx",value2:"yy"},function(){
        //callback here
        $("#myForm").reset();
    })
}

En formları günümüzde Gönder düğmesine bir setAttribute('disabled', 'disabled') yaparak bazı kullanıcılar çift butonlara tıklayarak sorunu aşmak. Tamamen form gizleme ve formu göstermek için onun yerine bir düğme koyarak bir çift nazar yapmak isteyebilirsiniz.

Sonuçlarının çıktısını php dosyasında, bir sopa

echo '<p>Thank you. Your message has been accepted for delivery.</p>';

Orada ve o dönmek için javascript söyleyin. Basit. Ayrıca, daha kolay bir hata oluşursa, sadece istemci tarafında herhangi bir şey değiştirmek zorunda kalmadan outputted metni değiştirmek için yapar.

Ben şahsen ajax gönderme döner kez boş olarak ilgili form alanlarını belirleyerek, jQuery ile bunu. Bunu rota aşağı gitmek için karar eğer başka bir yerde StackOverflow veya üzerinde kaynakların bol bulabilirsiniz düşünüyorum.

Aşağıdaki çalışması gerekir:

<script type="text/javascript">
  function resetForm() {
    document.getElementById("myForm").reset();
  }
</script>

Bir kez tam () ajax sonucu eval gerekir. Eğer jquery gibi bir şey kullanıyorsanız, bu çok kolay yapılabilir.

Denemek mi

<script type="text/javascript">
    $.ajax.....
     success: function() {
          $("#MyForm input").val('');
     }
</script>

Gerçek basit ama bunu yapmak valdidates sonra belki bu konuda gitmek için en iyi yoldur değil

header("Location: url?accepted=true") 

ve daha sonra koyun

if($_REQUEST['accepted'] == "true") echo "<p>Thank you. Your message has been accepted for delivery.</p>";