使用AJAX动态更新表行

时间:2012-04-24 11:30:32

标签: jquery ajax html-table row updating

通常情况下,我是jfGit的忠实用户,但我一直在寻找网络,无法使用此代码。

我的设置:

  • index.php - 包含由mysql数据库中的数据填充的表的页面。
  • update.php - 一个能够在html
  • 中输出表格行的php脚本

意图

我想要做的事:通过点击链接或按钮,可以更新特定的表格行。

当前解决方案

这是我到目前为止尝试过的代码。

Ajax / jQuery代码,在body标签下(是正确的位置吗?):

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('a.pop').click(function() { 
var popID = $(this).attr('rel');
$.ajax({
        url: 'update.php',
        method: 'GET',
        data: 'userID=' + popID,
        success: function(returnData){
             $(popID).html(data);
              $(popID).dialog();
              alert('Load was performed.');
        }
    });
});
});
</script>

表格代码(用php打印):

echo "<div id=\"$ID\">";
// all tr + td from table
echo "<td><a href=\"#\" id=\"clickingEvent\" class=\"pop\" rel=\"$ID\">Update</a></td>\n";
echo "</tr>\n";
echo "</div>";

结果

目前,我根本没有得到任何结果,AJAX甚至没有加载php页面。单击更新按钮后,没有任何反应。

非常感谢任何帮助,提前谢谢你:)

编辑:

部分解决方案

现在代码中的Ajax部分正常工作,感谢您的所有输入!

现在发生的事情是添加表格标签前面的新行,旧行仍然存在。当我看一下生成的源代码时,它会说我指定了一个div行为'popID'的新行。向下滚动,似乎删除了旧行的div标记。

我能以任何方式解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

请注意,您应该将检索到的数据添加到popID中。正确的方法是将您的功能修改为:

$.ajax({
        url: 'update.php',
        method: 'GET',
        data: 'userID=' + popID,
        success: function(new_data){
             $(popID).html(new_data);
              $(popID).dialog();
              alert('Load was performed.');
        }
    });

请注意,returnData现在是new_data,并且您使用相同的名称追加它

答案 1 :(得分:2)

尝试用以下方法替换ajax函数:

$.get('update.php',{userID: popID}, function(data) {
       $("#" + popID).html(data);
       $("#" + popID).dialog();
       alert('Load was performed.');
});

此外,请使用:$("a.pop").click(...)

,而不是$(document).on('click', 'a.pop', function () { ...});

这将为您提供返回相同jQuery事件的新按钮

答案 2 :(得分:0)

$(popID).html(data);$(popID).html(returnData);吗?或者这是一个错字?

答案 3 :(得分:0)

如果你有update.php

  1. UPDATE sql语句
  2. 用ajax查询它,你的数据库是MySQL
  3. 您尝试更新记录无需更改,(我的意思是使用相同数据简单更新行)
  4. 然后......你必须得到更新,因为它是ajax查询中的superultrastrange错误,在服务器端脚本中有特殊的UPDATE语句。但

    Use `REPLACE` statement instead.
    

    我花了很多时间寻找这个解决方案,真的太多了。我无法理解为什么会发生这种情况,因为当我使用自己的params调试整个脚本时,一切正常。