基本上,这就是我在做的事情: 我有一个flash / ajax文件上传器,用户可以选择x量的照片并上传它们,然后通过外部php脚本将它们插入到MYSQL数据库中。
将它们插入数据库后,我想在页面上显示它们,并允许用户编辑标签,标题等。
但是,我无法弄清楚如何“实时更新”页面以显示正确的数据
以此为例: showFields()在上传完成后运行;
function showFields() {
var jsvar = '<?php echo getIDs(); ?>';
document.getElementById('picndata').innerHTML += jsvar;
}
如果我有getID只返回一个静态值,例如“test”
,它将起作用但如果我要这样做:
function getIDs() {
$SQL = "SELECT * FROM `slides` ORDER BY `sid` DESC";
$results = mysql_query($SQL);
$row = mysql_fetch_assoc($results);
$slide = $row['sid'];
$SQL = "SELECT * FROM `slides` WHERE `sid` = $slide";
$results = mysql_query($SQL);
$str;
while ($row = mysql_fetch_array($results)) {
$str .= $row['size'] . "\r\n";
}
return $str;
}
(我知道马虎)
,然后它将无法工作,因为PHP首先运行,因此它没有找到任何结果,因为图像尚未上传!
有什么想法吗?
答案 0 :(得分:0)
这一行:
$str .= $row['size'] . "\r\n";
将导致您的JavaScript具有未终止的字符串文字。
变化:
var jsvar = '<?php echo getIDs(); ?>';
要:
var jsvar = '<?php echo str_replace("\r\n", "\\\r\n", trim(getIDs()) ?>';
这会将斜杠放在适当的位置,以便JavaScript有效。或者,您可以使用空格或逗号或任何最适合您代码的内容替换换行符,而不是添加反斜杠。
答案 1 :(得分:0)
使用ajax和时间戳图像。
我个人有一个'刷新'功能,可以通过setTimeout()定时调用。
在初始加载当前图像时,确定最新的图像时间戳。 在你的ajax中,查询带有时间戳&gt;的图像。之前的“最新”时间戳。如果您得到任何结果,请更新页面,并重置您的新“最新”变种 如果您从上传功能中获得一些可用于触发ajax的返回功能,则可以消除查看新图像的任何延迟。
我还建议将该时间戳存储在会话变量中,这样您就不会依赖于查询的用户输入。
还处理其他用户可以上传到同一区域的并发性。