基本上,这就是我正在做的:我有一个flash/ajax文件上传器,用户可以选择x张照片并上传,然后通过外部php脚本将它们插入MYSQL数据库。
在它们被插入数据库后,我想在页面上显示它们,并允许用户编辑标签、标题等。
然而,我不知道如何"实时更新"页面以显示正确的数据
举个例子:showFields((在上传完成后运行;
function showFields() {
var jsvar = '<?php echo getIDs(); ?>';
document.getElementById('picndata').innerHTML += jsvar;
}
如果我的getID只返回一个静态值,比如"测试",这将起作用
但如果我让它这样做:
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是先运行的,所以它找不到任何结果,因为图像还没有上传!
有什么想法吗?
此行:
$str .= $row['size'] . "'r'n";
将导致您的JavaScript具有未终止的字符串文字。
更改:
var jsvar = '<?php echo getIDs(); ?>';
收件人:
var jsvar = '<?php echo str_replace("'r'n", "'''r'n", trim(getIDs()) ?>';
这将在适当的位置放置斜杠,以便JavaScript有效。或者,您可以用空格或逗号或任何最适合您的代码的东西来完全替换换行符,而不是添加反斜杠。
使用ajax并为图像添加时间戳
我个人有一个"刷新"函数,它是通过setTimeout((定时调用的。
在初始加载当前图像时,确定最新的图像时间戳。在ajax中,查询时间戳>上一个"最新"时间戳的图像。如果得到任何结果,请更新页面,并重置新的"最新"变量。
如果您的上传函数有一些返回,可以用来触发ajax,这将消除查看新图像的任何延迟。
我还建议将时间戳存储在会话变量中,这样您的查询就不会依赖于用户输入。
还处理其他用户可能正在上传到同一区域的并发性。