暂停一次一个地跟踪从PHP数组返回的链接

暂停一次一个地跟踪从PHP数组返回的链接,php,javascript,Php,Javascript,我有一个json_编码的链接数组,我从一个php文件返回,我想做的是打开一个新窗口,让它一次一个地更改每个链接的url,并在移动到下一个项目之前暂停大约15秒 如果我在PHP文件中使用sleep(15),它似乎会暂停整个过程,然后立即将结果踢出 在for循环中使用setTimeout(function(){})似乎也没有帮助 肯定会有办法的,我想我只是不够熟悉 有什么建议吗 提前谢谢 如果我没弄错的话…你是说 $.post('../php/myPHP.php',{ input: input1,

我有一个json_编码的链接数组,我从一个php文件返回,我想做的是打开一个新窗口,让它一次一个地更改每个链接的url,并在移动到下一个项目之前暂停大约15秒

如果我在PHP文件中使用
sleep(15)
,它似乎会暂停整个过程,然后立即将结果踢出

for
循环中使用
setTimeout(function(){})
似乎也没有帮助

肯定会有办法的,我想我只是不够熟悉

有什么建议吗

提前谢谢

如果我没弄错的话…你是说

$.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++) { ... }
for(var i=0,len=results.length;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!');
            });
$.post('../php/myPHP.php',{input:input,values:values})
.完成(功能(r){
var results=$.parseJSON(r);
函数windowOpener(url、名称){
if(typeof(popupWin)!=“对象”){
popupWin=window.open(url、名称);
}否则{
如果(!popupWin.closed){
popupWin.location.href=url;
}
}
}
$('#content').html('');
对于(变量i=0,len=results.length;i

所以我还是会遗漏一些东西……有人吗?

不要使用循环,只需使用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();

您不能在服务器上使用睡眠,这只会延迟发送到客户端的任何输出。相反,您应该每次重复调用服务器以获取一个新的URL,或者一次返回一个完整的URL列表并使用
setTimeout
打开它。您可以使用
window.open
方法操作具有任意URL的新窗口


此外,发布代码可能对您更有帮助。

您能发布您目前拥有的代码吗?在我的编辑中,我是正确地遵循了您的建议,还是完全偏离了基础?是的,看起来不错,如果您使用chrome,使用调试控制台(F12)也很有帮助。如果我提供了帮助,也许您可以将此标记为正确答案。