2016-10-26 3 views
0

У меня есть форма, которая динамически создается, которая отправляет данные в базу данных и возвращает ответ с помощью ajax и добавляет эти данные в строку таблицы. Я вижу с помощью firebug, что ответ работает, но он не добавляет данные в мою таблицу. У меня это работает, но в настоящее время я пытаюсь вернуть возвращаемые данные в одну строку таблицы. Может ли кто-нибудь сказать мне, что не так?Как добавить динамические данные с помощью 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 ('' + response + ''); 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 (я предполагаю, что вы не пытались сериализовать кнопку, как это делал предыдущий код).

Затем мы публикуем данные, получаем результат и добавляем его по-прежнему. Надеюсь, это имеет смысл, и я старался максимально упростить его!

Смежные вопросы