代码返回的是最后一次刷新之前的最新值,而不是最新插入的值?

28 浏览
0 Comments

代码返回的是最后一次刷新之前的最新值,而不是最新插入的值?

我在表格中有一列按钮,声明如下:

(文件index.php)

echo '';

然后这个脚本读取被点击按钮所在行的数据,并将其发送到另一个php文件:


    

这个文件(show_lecturer.php)将读取的数据存储在数据库的一个表(keep_track)中:

(文件show_lecturer.php)


然后我使用jquery创建一个空的对话框,将它用从数据库中取出的数据填充:

(文件index.php)






然后从keep_track表中取出这些数据并在上述对话框中回显:

(文件index.php)

        $name; $surname;
        require_once('connect_db.php'); 
                $firstname = pg_query(connect(), "SELECT name FROM keep_track");
                while($row = pg_fetch_array($firstname)){ $name = $row['path']." ".$row['name'];    }
                $lastname = pg_query(connect(), "SELECT surname FROM keep_track");
                while($row = pg_fetch_array($lastname)){ $surname = $row['path']." ".$row['name'];  }       
                echo '';      
                echo $name."".$surname; 
                echo '';
?>

因此,当我点击第x行的按钮时,对话框会打开并显示第x行的数据。

唯一不正确的是:

当我点击按钮x时,它会打开一个对话框,但显示的是一个值,而不是x行的值。然而,当我查看数据库时,x行的值已存储在那里。复选框中的值是在页面最新刷新之前点击的按钮的值。就像我的调用链中有一些错误一样(我无法弄清楚,这就是为什么我在问的原因)。

为了说明我得到的数据:

(最初keep_track表是空的)

按下按钮1 -> 存储第1行,对话框没有内容
按下按钮2 -> 存储第2行,对话框没有内容
按下按钮3 -> 存储第3行,对话框没有内容
  手动刷新页面
按下按钮4 -> 存储第4行,对话框显示第3行的内容
按下按钮5 -> 存储第5行,对话框显示第3行的内容
  手动刷新页面
按下按钮6 -> 存储第6行,对话框显示第6行的内容
按下按钮7 -> 存储第7行,对话框显示第3行的内容

0
0 Comments

问题出现的原因是因为AJAX调用是异步的,所以无法确定回复的时间。解决方法是使用ajax的成功回调函数来处理结果。另外,可以在show_lecturer.php中返回HTML而不是JSON,然后使用JQuery添加接收到的数据。另一种方法是仍然返回JSON,然后在JQuery中创建HTML来显示数据。需要注意的是,调用一个PHP文件来设置一些HTML并不是一个常见的解决方案。学习在JQuery中构建HTML与PHP并没有太大区别。

0
0 Comments

问题的出现原因:

在之前的代码中,页面加载时div元素被创建并填充了内容,而并没有点击按钮进行请求。因此,当点击按钮时,显示的是上次页面加载时(上次刷新)的div内容。

解决方法:

改变代码,使用$("#div").load("content.php", {x:parameter_1, y:parameter_2, ......});来请求内容。当按钮被点击时,请求content.php页面进行加载,同时传递搜索参数,这样就能获取到所需的数据。这样的修改使得div元素在页面初始加载时是不可见和空的,只有当按钮被点击时才会加载内容。

此外,还需要进行其他一些次要的修改来使得代码正常工作,但这是解决问题的主要思路。

0