Jquery 使用AJAX动态更新表行
通常情况下,我是jfGit的忠实拥护者,但我一直在网络上寻找,无法让这段代码正常工作 我的设置: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.
- php-包含由mysql数据库中的数据填充的表的页面
- update.php-一个能够以html格式输出表行的php脚本
$(文档).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