簡體   English   中英

jQuery,Ajax和PHP提交多種表單難題

[英]jQuery, Ajax & PHP submit multiple forms dilemma

這是我在網上找到的一種非常簡單的形式(因為我是jQuery初學者)。

<!-- this is my jquery -->

<script>
    $(document).ready(function(){
$("form#submit_wall").submit(function() {

var message_wall = $('#message_wall').attr('value');
var id = $('#id').attr('value');
$.ajax({
type: "POST",
url: "index.php?leht=pildid",
data:"message_wall="+ message_wall + "&id="+ id,
cache: false,

success: function(){
$("ul#wall").prepend(""+message_wall+"", ""+id+"");
$("ul#wall li:first").fadeIn();

alert("Thank you for your comment!");
}
});
return false;
});
});
</script>

<!-- this is my HTML+PHP -->
some PHP ...
      while($row_pilt = mysql_fetch_assoc($select_pilt)){

       print 

<form id="submit_wall">
<label for="message_wall">Share your message on the Wall</label>
<input type="text" id="message_wall" />
<input type="hidden" id="id" value="'.(int)$row_pilt['id'].'">
<button type="submit">Post to wall</button>
</form>

下面是我的寫入mySQL的PHP​​腳本。

這是一個非常簡單的腳本。 但是,提交時變得有點復雜。 由於我的頁面上有多個表單(每個WHILE PHP LOOP),因此在我提交時-僅提交了FIRST表單。 此外,我提交的任何其他后續表單-數據都是從第一個表單中復制的。 有沒有清除數據的jQuery函數? -還是有更好的解決方案。

謝謝,尼克

這是因為您要給每個表單相同的ID,因此它將提交使用該ID找到的第一個元素,即第一個表單。 您應該做的是為每個表單分配一個唯一的ID,然后為每個表單提供一個AJAX提交功能,該功能可以提交特定於表單的數據。 您可以使用jQuery的$ .each()函數循環瀏覽所有表單,並使用Submit函數中的$(this).attr('id')檢索特定於表單的ID。

更新:正如對此答案的評論所揭示的,您實際上不需要each()函數,因為jQuery無論如何都將其應用於每個表單元素。

這將是一個示例腳本:

$(document).ready(function(){
    $("form").submit(function() {
        var message_wall = $(this).children('input[type="text"]').attr('value');
        var id = $(this).children('input[type="hidden"]').attr('value');
        $.ajax({
            type: "POST",
            url: "index.php?leht=pildid",
            data:"message_wall="+ message_wall + "&id="+ id,
            cache: false,
            success: function(){
                $("ul#wall").prepend(""+message_wall+"", ""+id+"");
                $("ul#wall li:first").fadeIn();
                alert("Thank you for your comment!");
            }
        });
       return false;
   });
});

因為我們看不到您的所有 form ,所以我不確定,但是考慮到您的問題,我將假設其他表單都共享相同的idform#submit_wall ),該id 必須是無效的在文檔中是唯一的。

鑒於您將要更改其他形式的id (我建議使用class名,可能是'submit_wall',但具體情況取決於您),jQuery也需要更改。 從:

$("form#submit_wall").submit(function() {

至:

$("form.submit_wall").submit(function() { // using the class-name instead of the id.

當然,現在,您遇到了重復id的相同問題。

因此,我再次建議將id更改為class並更改:

var message_wall = $('#message_wall').attr('value');
var id = $('#id').attr('value');

至:

var message_wall = $(this).find('.#message_wall').attr('value');
var id = $(this).find('.id').attr('value');

鑒於以上您所發布的混亂情況,我很難相信這就是您所需要的。 這肯定將是值得張貼整頁(或演示JS小提琴JS斌 ), 充分再現了你的代碼。

暫無
暫無

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

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