2016-10-26 4 views
0

私はデータベースにデータを投稿し、ajaxで応答を返し、このデータをテーブル行に追加する動的に作成されたフォームを持っています。私は火かき棒で応答が働いているのを見ることができますが、私のテーブルにデータを追加していません。私はこれが働いているが、私は現在、返されたデータを同じテーブル行に追加しようとしています。誰が間違っているのか教えてもらえますか?jqueryで動的データを追加するには?

ここは私のjqueryです。ここで

$(document).on('submit', '.myForm', '.results', function(e) {  
    var new_data = $("#" + $(this).data("table")).find('tbody > tr')  
    e.preventDefault();   
    $.ajax({ 
     url: 'add_tag_test.php', 
     type: 'POST', 
     dataType: 'html', 
     data: $(this).serialize(), 
     success: function(response) { 
      $(new_data).hide().fadeIn("slow").append('<td>' + response + '</td>');   
      $('#message').show().fadeIn(); 
      $('#message').fadeOut("slow");   
     }   
    }); 

    return false; 
}); 

送信ボタンは、私のダイナミックなフォームである:

<span class="pull-right"><button type="submit" data-table="myTable'.$i.'" class="fabutton"></button></span> 

これは、私は自分自身を追加されていない取得していますという応答である:

 <td><small><a href="profile.php?user_name=Julian" 
<span class="" id=".6.">Julian,&nbsp;</small></a></td> 
+1

'new_data'はテーブル' tr'要素を適切に保持していますか? –

+0

行に単純な列を追加するのは非常に奇妙です。新しい行は必要ありませんか?次に、new_dataの値は何ですか?それは右のDOM要素を指していますか? – Nico

+0

new_data.hide()。fadeIn( "slow")。append( '​​' +レスポンス+ ''); new_dataはすでにjQueryオブジェクトです。$()でラップする必要はありません。 – Imaginaroom

答えて

1

私は、と仮定していますここでの目的は、既存のテーブルに列を追加することです。私が試してみたいことは、ちょっとプロセスを少し簡略化しようとしています:

あなたの送信ボタンがピギーバックしてから(あなたが試していると仮定しているように)

<button 
    type='submit' 
    onclick='return submitClicked(this, "myTable<?php echo $i;?>");' 
    class='fabutton'>Click Me</button> 

    ... 

<script> 

    function submitClicked(button, table_id){ 

     button = $(button); 
     var form = button.parents('form:first'); 
     var rows = $('#'+table_id).find('tbody > tr'); 

     $.ajax({ 
      url: 'add_tag_test.php', 
      type: 'POST', 
      dataType: 'html', 
      data: form.serialize(), 
      success: function(response) { 
       rows.hide().append('<td>' + response + '</td>').fadeIn("slow"); 
       $('#message').fadeIn(); 
       $('#message').fadeOut("slow");   
      } 
     }); 

     return false; 
    } 

</script> 

だから、我々はボタンとそれへのパラメータとしてフォームのIDを送信して、再利用可能な関数を作成し、使用している:達成するために)、ボタンが中に含まれていることをフォームからシリアライズされたデータを送信しますあなたが以前のコードのようにボタン自体をシリアル化しようとしていなかったと仮定しています)をシリアル化したフォームデータをあなたのadd_tag_test.phpファイルに渡すために含まれているフォームを取得するボタンです。

次に、データを投稿し、結果を取得し、前と同じように追加します。私はこれが意味をなさないことを願っており、できるだけ簡素化しようとしました!

関連する問題