1

私はphpファイルから返すリンクのjson_encoded配列を持っています。私がやりたいのは、新しいウィンドウを開き、URLを各リンクに1つずつ変更し、約15秒間一時停止することです次の項目に移る前に。

PHPファイルで使用するsleep(15)と、全体が一時停止してから、結果が一度に追い出されるようです。

また、ループsetTimeout(function () {})で使用しても、使用しても役に立たないようです。for

それを行う方法はありますが、私は十分に慣れていないと思います.

何かアドバイス?

前もって感謝します!

したがって、私が正しくフォローしている場合...次のようなことを提案しています

$.post('../php/myPHP.php',{ input: input1, value: value } )
      .done(function(r) {
           var results = $.parseJSON(r);

           var display = function() {

           if(results.length > 0) {
           show_url_in_a_new_window(results.link.pop());
           setTimeout(display, 15 * 1000);
           }
        };

        display();

        })
       .fail(function() {
       console.log('Epic Fail!');
});

しようとする代わりに

for (var i = 0, len = results.length; i < len; i++) { ... }

右?

-- 新しい編集ウィンドウを開くようにしましたが、結果の最後のリンクにジャンプするだけですか?!

    $.post('../php/myPHP.php',{ input: input, values: Values } )
            .done(function(r) {
                    var results = $.parseJSON(r);

                    function windowOpener(url, name) {
                        if (typeof(popupWin) !== "object"){
                            popupWin = window.open(url, name);
                        } else {
                            if (!popupWin.closed){
                            popupWin.location.href = url;
                            }
                        }
                    }

                    $('#content').html('');

                    for (var i = 0, len = results.length; i < len; i++) {
                        console.log(results[i].link);

                        setTimeout( windowOpener(results[i].link, 'Window'), 5000); //Still only goes to the last link
                    }
            })
            .fail(function() {
                console.log('Epic Fail!');
            });

だから私はまだ何かを逃さなければなりません...誰か?

4

2 に答える 2

0

サーバーでスリープを使用することはできません。これは、出力がクライアントに送信されるのを遅らせるだけです。代わりに、毎回新しい URL を取得するためにサーバーを繰り返し呼び出すか、URL のリスト全体を 1 回返してから を使用setTimeoutして開く必要があります。このメソッドを使用してwindow.open、どの URL でも新しいウィンドウを操作できます。

また、コードを投稿すると、おそらくより役立つでしょう。

于 2013-06-23T17:15:37.940 に答える
0

ループを使用しないでください。settimeout を使用して、配列からアイテムをポップします。

var items = your-array-from-php;
var display = function() {
    if(items.length > 0) {
        show_url_in_a_new_window(items.pop());
        setTimeout(display, 15 * 1000);
    }
};
display();
于 2013-06-23T17:14:24.880 に答える