Ищете скрипт, который изменяет форму div при отправке формы без обновления страницы - PullRequest
1 голос
/ 10 января 2011

У меня есть форма электронной почты на странице HTML, и как только вы нажмете кнопку "Отправить", чтобы отправить отправку формы, я бы хотел, чтобы "форму" DIV обновили или заменили, чтобы сказать "Спасибо".

Попробовал поискать в Google, но не повезло найти что-то конкретное, что я могу использовать.

Есть идеи?

Спасибо

Ответы [ 6 ]

3 голосов
/ 10 января 2011

Вы можете использовать метод jQuery.ajax:

$.ajax({
  url: 'ajax/send_mail.php',
  data: "message="+$('#some_field').val(),
  success: function(data) {
    //replace form (form is in div <div id="form"><form>Form data</form></form>)
    $('div#form').html('<p>Thank You!<p>');
    //or $('div#form').html(data); if you are returning message from send_mail.php
  }
});

Если у вас возникли проблемы, я могу написать вам целый сценарий (я просто в настроении и у меня есть немного свободного времени):)

ОБНОВЛЕНИЕ:

По сути это оно.

Скопируйте / вставьте это как форму:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hr-HR" lang="hr-HR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Title</title>
<script type="text/JavaScript"  charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
 $('#submit').click(function(){
  $.ajax({
   type: "GET",
    url: 'sendit.php',
    dataType: 'json',
    data: $('form#mail_form').serialize(),
    success: function(data) {
    if(data.success==1){
   $('div#form').html(data.message);
   }
    }
  });
  return false;
 });
});
</script>
</head>
<body>
 <div id="form">
  <form id="mail_form">
  <div>
   <input type="text" name="subject" id="subject"/>
  </div>
  <div>
   <textarea name="message" id="message"></textarea>
  </div>
  <div>
   <input type="submit" name="submit" id="submit" value="Send"/>
  </div>
  </form>
 </div>
</body>
</html>

Скопируйте / вставьте это, как вы отправили:Вы ДОЛЖНЫ проверить эти данные

//do stuff, send mail, save to database,...
 $data['success']=1;
 $data['message']='Thank You!';
 echo json_encode($data);
0 голосов
/ 10 января 2011

Предположим, это ваша разметка ...

...
<div id='formcontainer'>
  <form id='emailform' ....>
  </form>
</div>
..


и вот ваш код JQuery ...

$(document).ready(function(){
    $('emailform').submit(function(){

        // serialize your form to get the data, all do what you want to to...

        // now, do AJAX thing here...
        $.ajax({
            type: 'POST',  
            url: yourscript.php,
            data: data,             // serialized data, for example
            success: function(){
                // this is performed on success
                $('emailform').hide();          // form will fade out
                $('formcontainer').html('Thanks, the message has been sent')
            }
        });        

        return false;    // this prevent form from real submit
    });
});



Дайте мне знать результат:)

0 голосов
/ 10 января 2011

Создайте новый div с идентификатором thankyouDiv и первоначально установите его style="display:none;".Этот div должен содержать ваше сообщение с благодарностью. При отправке формы сначала скрыть div, содержащий форму электронной почты, и показать «thankyouDiv», изменив style="display:block;". После этого вы можете отправить форму.ваша проблема

0 голосов
/ 10 января 2011

Вы можете сделать AJAX POST и в обратном вызове вы можете отобразить сообщение «спасибо» (jQuery может помочь).

Код может выглядеть так:

$.post('test.do', function(data) {
  $('.confirmation').show();
});
0 голосов
/ 10 января 2011

Проверьте jQuery's replaceWith():

$('div.the-form').replaceWith('<div class="thankyou">Thanks for your submission.</div>');
0 голосов
/ 10 января 2011

Вы можете просто скрыть форму, используя jquery / javascript, и показать сообщение div с благодарностью при отправке формы. Изменить: Попробуйте следующее:

    <html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function (){
 $("#button").click(function () {
    $("form").hide();
    $("div").show();
    return false;
 });
 });
</script>
<form>
form data<br/>
<button id="button">click me</button>
</form>
<div style="display: none">
thank you
</div>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...