1

検索時にアイテムをリストする必要があります。サーバーサイドのphpスクリプトが仕事を終える間、ある種のロードサイン、無限の進行状況などを使用する代わりに、サーバーサイドで見つかったらすぐに結果を表示したいと思います。

PHP サイド シームは、偽の 10 倍の結果 (server.php) を実行するのが非常に簡単です。

header( 'Content-type: text/html; charset=utf-8' );
$i = 0;
while($i < 10)
    {
        ?>
        $('#resultZone-13').append('<div class="fileline">someresult</div>');
        <?
        flush();ob_flush(); 
        usleep(200000); //0,2s
        $i++;

    }

クライアント側では、getScript が機能することを望んでいましたが、機能しませんでした。これは私が持っているものです:

$.post('server.php',{}, function(data) 
    {
    },"script");

ただし、この組み合わせでは、サーバーサイド スクリプトが完全に完了するのを待ってから、10 個の jquery コマンドを実行します。コマンドを受信するとすぐにJQueryにコマンドを実行させるにはどうすればよいですか?

私が持っている唯一のアイデアは、オフスクリーンiframeをロードし、このiframe内にserver.phpページをロードするように依頼することですが、その後、このiframe内で立ち往生しています...

4

2 に答える 2

1

わかりました、数日間の休暇の後、これを機能させました..(私は新しいお父さんです!)基本的にこれを行う方法です:

ドキュメントに非表示の iframe を作成し、その中にリモート php ファイルをロードします。このphpファイルは、一部のjavascriptコンテンツをこのiframeにフラッシュできます。これが、順番に表示できる唯一の方法です。

たとえば、次のテストを実行しました。

<?
header( 'Content-type: text/html; charset=utf-8' );
echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>';
$i = 0;
while($i < 10)
    {
        ?>
        <script type="text/javascript">

        $(window.parent.document).find('#subfolder13').append('<div class="folderline"><div class="closedfolder" style="margin-left:48px;"></div>Pecq</div>')

        </script>
        <?
        flush();ob_flush(); 
        usleep(200000); //0,2s
        $i++;

    }
?>

これは呼び出し元フレームとまったく同じファイルであるため、最初のクエリの負荷が高いことは気にしません。したがって、99% の場合、このファイルは新しくキャッシュされます。本当に必要な場合、これはプレーンな JavaScript である可能性がありますが、この背後にある考え方は変わりません。

于 2013-09-16T20:33:35.420 に答える
1

できません。socket.ioを実装するか、代わりに$.getScriptを使用する必要があります。

これを試して :

var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'test.php';
$('head').append(s);
于 2013-09-08T20:19:41.797 に答える