簡體   English   中英

使用jQuery / AJAX用新的表單/內容重新填充div

[英]Repopulating div with new form/content using jQuery/AJAX

是否存在任何jQuery / AJAX函數,當顯示表單(或與此相關的任何內容)時,按下按鈕后,包含原始表單的div就會被新表單替換? 本質上,它是一個多部分的表單,而無需重新加載頁面。

我可以使用這樣的東西嗎?

$('form#myForm').submit(function(event) {
    event.preventDefault();
        $.ajax({
            type: '',
            url: '',
            data: $(this).serialize(),
            success: function(response) { 
                $('#divName').html(response); 
                //somehow repopulate div with a second form?
            }
        })
        return false;
 });

我以前曾用它來將項目添加到列表中,但是我從未用過它完全用不同的內容來重新填充它。 如何將其定向到第二種形式?

編輯-我得到它的工作,但只有當我寫'#form2'作為替代。 我收到了警報,得到了{"formToShow":"show2"} 我嘗試做response.formToShow,但它是未定義的。

<head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
</head>


<div id="divName">
    <form method="POST" action = "#" id="form1">
        <input type="textbox" name="textbox1" value="1"/>
        <input type="submit" name="submit1"/>
    </form>

    <form method="POST" action = "#" id="form2" style="display: none">
        <input type="textbox" name="textbox2" value="2"/>
        <input type="submit" name="submit2"/>
    </form>
</div>

<script>
 $('form#form1').submit(function(event) {
    event.preventDefault();
        $.ajax({
            type: 'JSON',
            url: 'receiving.php',
            data: $(this).serialize(),
            success: function(response) { 
                $('#form1').hide();  //hides
                //$('#form2').show();  //this will show
                $(response.formToShow).show(); //this does not display form 2
            }
        })
        return false;
    });
</script>

這是receiveing.php。 當我查看此頁面時,將顯示{"formToShow":"show2"}

<?php
echo json_encode(array("formToShow" => "#form2"));
?>

這是個人喜好,但我絕不會通過響應發送HTML並像這樣顯示它,我要做的是:

從服務器發送回JSON數組,例如{ formToShow: "#form1" }

然后,您可以簡單地執行以下操作:

success: function(response) { 
   $('form').hide();
   $(response.formToShow).show();
}

顯然,使用此方法,您還必須在標記中使用第二種形式,如下所示:

<form method="POST" action = "#" id="form2" style="display: none">
<input type="textbox" name="textbox2"/>
<input type="submit" name="submit2"/>
</form>

您還必須更改(以拾取陣列):

 $.ajax({
        type: 'JSON'

嘗試這個

$('form#myForm').submit(function(event) {
    event.preventDefault();
    $.ajax({
        type: '',
        url: '',
        data: $(this).serialize(),
        success: function(response) {
        $('#divName').html(response); 
        $('#form1').hide();
        $('#form2').show();
        }
    })
    return false;
 });


<form method="POST" action = "#" id="form1">
    <input type="textbox" name="textbox1"/>
    <input type="submit" name="submit1"/>
</form>

<form method="POST" action = "#" id="form2" style="dispay:none;">
    <input type="textbox" name="textbox2"/>
    <input type="submit" name="submit2"/>
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM