Jquery 使用AJAX动态更新表行

Jquery 使用AJAX动态更新表行,jquery,ajax,html-table,row,updating,Jquery,Ajax,Html Table,Row,Updating,通常情况下,我是jfGit的忠实拥护者,但我一直在网络上寻找,无法让这段代码正常工作 我的设置: php-包含由mysql数据库中的数据填充的表的页面 update.php-一个能够以html格式输出表行的php脚本 意图 我想做的是:通过单击链接或按钮,更新特定的表行 当前解决方案 这是迄今为止我尝试的代码 Ajax/jQuery代码,就在body标记下面(这是正确的位置吗?) $(文档).ready(函数(){ $('a.pop')。单击(函数(){ var popID=$(this.

通常情况下,我是jfGit的忠实拥护者,但我一直在网络上寻找,无法让这段代码正常工作

我的设置:

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

我想做的是:通过单击链接或按钮,更新特定的表行

当前解决方案

这是迄今为止我尝试的代码

Ajax/jQuery代码,就在body标记下面(这是正确的位置吗?)


$(文档).ready(函数(){
$('a.pop')。单击(函数(){
var popID=$(this.attr('rel');
$.ajax({
url:'update.php',
方法:“GET”,
数据:“userID=”+popID,
成功:函数(返回数据){
$(popID).html(数据);
$(popID.dialog();
警报(“已执行加载”);
}
});
});
});
以及表格代码(使用php打印):

echo”“;
//表中的所有tr+td
回音“\n”;
回音“\n”;
回声“;
结果

目前,我没有得到任何结果,AJAX甚至没有加载php页面。单击“更新”按钮后,什么也没有发生

如果您有任何帮助,我们将不胜感激,请提前感谢:)

编辑:

部分解决方案

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

但是现在发生的是,它在表标记前面添加了一个新行,而旧行仍然保留。当我查看生成的源代码时,它说有一个新的行,其div id为我指定的'popID'。向下滚动,旧行的div标记似乎已被删除


有什么办法可以解决这个问题吗?

请注意,您应该将检索到的数据添加到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现在是新的_数据,您可以使用相同的名称将其附加到popID中。请注意,您应该将检索到的数据添加到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现在是新的_数据,您可以使用相同的名称将其追加

尝试用以下内容替换ajax函数:

$.get('update.php',{userID: popID}, function(data) {
       $("#" + popID).html(data);
       $("#" + popID).dialog();
       alert('Load was performed.');
});
此外,使用:
$(文档),而不是
$(“a.pop”)。单击(…)
。在('click',a.pop',function(){…})上


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

尝试用以下内容替换ajax函数:

$.get('update.php',{userID: popID}, function(data) {
       $("#" + popID).html(data);
       $("#" + popID).dialog();
       alert('Load was performed.');
});
此外,使用:
$(文档),而不是
$(“a.pop”)。单击(…)
。在('click',a.pop',function(){…})上


这将为您返回相同jQuery事件的新按钮提供
$(popID).html(数据)be
$(popID).html(返回数据)?还是打字错误?

应该是
$(popID).html(数据)be
$(popID).html(返回数据)?还是打字错误?

如果你有
update.php

  • UPDATE
    sql语句
  • 用ajax查询它,您的DB就是MySQL
  • 您尝试更新记录,而不做任何更改(我的意思是简单地用相同的数据更新一行)
  • 然后。。。您必须不获取任何要更新的内容,因为它是ajax查询中的superultrastrange bug,在服务器端脚本中使用了
    UPDATE
    语句。但是,如果您在保存(更新)数据之前对其进行一些更改,它将起作用

    Use `REPLACE` statement instead.
    

    我花了很多时间寻找这个解决方案,真的太多了。我不明白为什么会发生这种情况,因为当我用自己的参数调试整个脚本时,一切都很好。

    如果你有
    update.php

  • UPDATE
    sql语句
  • 用ajax查询它,您的DB就是MySQL
  • 您尝试更新记录,而不做任何更改(我的意思是简单地用相同的数据更新一行)
  • 然后。。。您必须不获取任何要更新的内容,因为它是ajax查询中的superultrastrange bug,在服务器端脚本中使用了
    UPDATE
    语句。但是,如果您在保存(更新)数据之前对其进行一些更改,它将起作用

    Use `REPLACE` statement instead.
    

    我花了很多时间寻找这个解决方案,真的太多了。我不明白为什么会发生这种情况,因为当我用自己的参数调试整个脚本时,一切都很好。

    从技术上讲,(为了工作的缘故),当您使用
    $(document.ready())时,您可以将脚本代码放在页面中您想要的任何位置;如果您不使用它,那么您可能会惊讶于如果脚本仍保留在头部,那么可用的内容会是什么。感谢您添加veeTrain:)从技术上讲,(为了工作的缘故),当您使用
    $(document.ready()
    )时,您可以将脚本代码放在页面中您想要的任何位置;如果您不使用它,那么您可能会惊讶于如果脚本仍然保留在头部,那么它的可用性。感谢您添加了veeTrain:)
    $.get()
    只需在jQuery代码中调用
    $.ajax()
    ,因此如果您向它传递与
    $.ajax()
    给定的属性匹配的参数,您也在做同样的事情。另外,
    .live()
    已被弃用(并且已经有相当一段时间了),不要自己使用它,也不要建议其他人在你的答案中使用它。感谢大家的回答,到目前为止,这是一个很大的帮助!多亏了paulslater19的代码,我让Ajax部分开始工作,它现在加载页面并获得正确的表内容。问题是,它没有更新当前行,而是在表标记前面添加了一行。有什么办法可以解决吗?@Freeloader这可能是因为你的html-你应该在一个文件中包含s和s。标记应该是:Blah..Row2@AnthonyGrist谢谢,我知道$.get使用$.ajax,但我认为它可以简化事情。我已将代码更新为使用“on”而不是“live”。我知道它仍然被映射到“on”,所以di