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 ファイルから、または ajax リクエストの後に js を読み取っていないため、sortable() のメソッドが失われているようです。ここで何が欠けていますか?

どうもありがとう。

4

2 に答える 2

0

ajax を使用してリモート ページからスクリプトをロードする場合、ロード先のページで ready イベントが既に発生していることを認識することが重要です。

これは、ラップされたコード$(function(){})が受信されるとすぐに起動することを意味します。そのコードが参照する html より前にある場合、その html はまだ存在しないため、検出されません。

同じコードをそれが参照する html の下に移動すると、html が存在する後に起動するため、それが見つかります。

編集:私の答えは、OPの「実行:」の後に表示されるすべてのコードがリモートページに含まれていることを前提としています

于 2012-06-28T00:46:54.467 に答える
0

sort.php の結果に対するハンドラーがありません。これを呼び出すと、データがキャッシュにロードされるだけです。

データを dom に追加することは言うまでもなく、データを更新するには完全なハンドラー関数が必要です。質問を明確にし、これらが 2 つの異なるページであることを明確にする必要があります。

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

于 2012-06-28T00:59:05.677 に答える