2

通常,我是 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 部分现在可以正常工作,感谢大家的输入!

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

有什么办法可以解决吗?

4

4 回答 4

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,并且您附加了相同的名称

于 2012-04-24T11:33:42.827 回答
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 事件的新按钮

于 2012-04-24T11:34:23.543 回答
0

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

于 2012-04-24T11:34:37.897 回答
0

如果你有update.php

  1. 一条UPDATEsql语句
  2. 用ajax查询它,你的数据库是MySQL
  3. 您尝试在不更改的情况下更新记录,(我的意思是简单地更新具有相同数据的行)

那么......你必须得到任何更新,因为它是 ajax 查询中的超奇怪错误,UPDATE在你的服务器端脚本中具有特殊的语句。但是,如果您任何保存(更新)数据之前对其进行一些更改,它将起作用。

Use `REPLACE` statement instead.

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

于 2016-10-30T11:28:12.333 回答