我有一个动态创建的表单,它将数据发布到数据库并返回带有ajax的响应,并将此数据附加到表行。我可以看到firebug响应正在运行,但它没有将数据附加到我的表中。我有这个工作,但我目前正在尝试将返回的数据附加到同一个表行。有谁能告诉我出了什么问题?
这是我的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, </small></a></td>
答案 0 :(得分: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
文件(我假设您没有像以前的代码那样尝试序列化按钮本身。)
然后我们发布数据,得到结果,并像以前一样追加它。我希望这是有道理的,我尽可能地简化它!