【问题标题】:AJAX: display a random line every minuteAJAX:每分钟显示一条随机线
【发布时间】:2011-06-26 23:58:30
【问题描述】:

我有 a PHP-script 显示随机文本:

<?php

$quotes = array(
        'quote 1',
        'quote 2',
        'quote 3',
        'quote 4',
        'quote 5',
);

$i = array_rand($quotes);

header('Content-Type: text/plain; charset=utf-8');
print($quotes[$i]);

?>

我怎么能每分钟都调用它来在我的网页(在 Facebook 上是 an iframe app)上显示一个新的报价(UTF8 编码的俄语文本)?

我需要在这里使用 jQuery 还是有更轻量级的解决方案,可以在通常的浏览器中工作?

我还没有任何 AJAX 经验。

更新:

正如下面 Uku Loskit 所建议的,我添加了以下 sn-p 并且效果很好。谁能告诉我如何使用fadeIn() 淡化新报价?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
        setTimeout( function() {
                $.get("/hint.php", function(data) {
                        $("#hint").html(data);
                });
        }, 5*60*1000 );
});
</script>

谢谢! 亚历克斯

【问题讨论】:

    标签: php javascript ajax jquery xmlhttprequest


    【解决方案1】:

    使用setTimeout() 方法。

    我会说使用“仅用于 AJAX”的 jQuery(尤其是缩小版)并没有什么大不了的,因为它提供了跨浏览器兼容的解决方案并且更容易编程。

    示例:

    function getNewQuotes() {
       $.get("random_quotes.php", function(data) {
           // set the response from random_quotes.php to this div
           $("#quotesDiv").html(data);
       }); 
    }
    
    // 60000 milliseconds = 60 seconds = 1 minute
    var t=setTimeout("getNewQuotes()", 60000);
    

    至于你的混合“非 JQuery 和 Javascript”的问题,据我所知没有 jQuery 函数,总之 jQuery 仍然是 Javascript 并且一直依赖 jQuery 特定代码是没有必要的,但仅对一致性有用。

    编辑:

    $(function() {
                setTimeout( function() {
                        $.get("/hint.php", function(data) {
                                // first hide, then insert contents
                                $("#hint").hide();
                                $("#hint").html(data);
                                // you can probably chain this together into one command as well
                                $("#hint").fadeIn("slow");
    
                        });
                }, 5*60*1000 );
    });
    

    【讨论】:

    • 谢谢,我知道如何调用 setTimeout,但是如何对 quote.php 进行 AJAX 调用?
    • 谢谢,这很有效,我已经更新了问题。你能帮我把fadeIn()作为最后的接触吗? :-)
    • 谢谢,我最终使用了 setInterval。
    【解决方案2】:

    您不需要 jquery,但这样更容易。只需从manual 接听 如何获取一次的基本示例:

    $.ajax({
      url: "yourFileName.php",
      context: document.body,
      success: function(result){
        $('#someDiv').html('result');
      }
    });
    

    然后添加 javascript 代码以定期执行此操作。我相信你也可以从 jquery thingymabob 中找到一些漂亮的东西:)

    【讨论】:

    • jQuery.ajax() 没有任何“计时器”参数,请问如何强制每分钟调用一次?
    • 使用@uku提到的setTimer?
    • jQuery.ajax() 调用的脚本应该打印什么格式/数据?它应该是 text/plain 还是 text/html?我应该打印 和 还是只打印

      my quote

    • Nanne,这不是 jQuery 和非 jQuery 的混合体吗?是否有可能定期调用 jQuery.ajax() 的 jQuery 方式?
    • 我也对上下文感到困惑:document.body - 会取代完整的网页吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多