0

我有一个使用模式上传文件的页面 index.php。上传这些后,我使用以下内容更新我的数据库并将新图像加载到列表中。

$('#sortableImages').load('../includes/sortImages.php?edit=' + edit);

执行:

<script type="text/javascript">
$(document).ready(function(){ 

    $(function() {
        $("#sortableImages ul").sortable({ 
            opacity: 0.6, cursor: 'move', update: function() {
                var order = $(this).sortable("serialize") + '&action=updateRecordsListings';
                $.post("../albumUploader/queries/sort.php", order);
            }
         });
    });

});
</script>
echo "<ul class='revisionList'>";

                while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    $sortImageName = $row['OrgImageName']; 
                    $sortPath = "../data/gallery/" . $getGalleryID . "/images/album/" . $sortImageName;
                    echo "<li class='sortPhotos' id='recordsArray_{$row['id']}' >";
                    echo '<img src="'. $sortPath .'"/>';
                    echo "</li>";
                }

                echo "</ul>";

图像填充在索引页面上的 div #sortableImages 中。但是,似乎我从最初加载在 index.php 中的 js 文件中丢失了我的 sortable() 方法,或者在 ajax 请求之后它没有读取 js。我在这里想念什么?

太感谢了。

4

2 回答 2

0

当您使用 ajax 从远程页面加载脚本时,重要的是要意识到在您正在加载的页面中已经发生了 ready 事件。

这意味着包裹在其中的代码将在$(function(){})收到后立即触发。如果该代码在它引用的 html 之前,它将找不到该 html,因为它还不存在。

如果您将相同的代码移到它所引用的 html 下方,它将在 html 存在后触发,因此会找到它。

编辑:我的回答假定 OP 中“执行:”之后显示的所有代码都包含在远程页面中

于 2012-06-28T00:46:54.467 回答
0

对于 sort.php 的结果,您没有处理程序。调用它只会将数据加载到缓存中。

您需要一个完整的处理函数来刷新数据,更不用说将其添加到 dom 中。您应该澄清您的问题,并明确指出这是两个不同的页面。

$.post("../albumUploader/queries/sort.php", order).complete = func...

于 2012-06-28T00:59:05.677 回答