如何在脚本中停止ajax.periodicalupdater?

时间:2011-01-04 22:08:45

标签: ajax prototypejs

我目前正在使用主要使用php的项目,我需要ajax定期重新启动请求。但我在javascript中的知识几乎为0。

我最近发现我可以使用原型的Ajax.PeriodicalUpdate来做到这一点并且工作正常。我用它来查看我的php数据库,如果添加了一个新元素,当它完成后我的脚本会将用户重定向到另一个页面。但是,一旦用户在此页面上,Ajax.PeriodicalUpdate仍在工作,并将用户带回上一页。

我想避免这种情况。我在原型文档中发现我只需要使用停止但我认为我没有正确使用它...

我有2个php页面:

第1页的

,在HEAD部分我有:

var attente= new Ajax.PeriodicalUpdater('attente', 'Page2.php', {
    frequency: 1
});
第2页的

我应该插入像attente.stop();在身体部分,当条件满足但它不起作用时......

我应该在哪里插入第2页

<script language="javascript" type="text/javascript" src="prototype.js"></script>

在头部还是在停止之前?

1 个答案:

答案 0 :(得分:1)

你的Page2.php应该返回一些你可以在Page1.php中识别的内容,例如:

使page2.php

<?php 
if($conditionFulfilled) 
   echo 'Stop' 
else 
   echo 'Continue' 
?>

(通常用json完成,但对于你的情况,简单的字符串应该完成这项工作)

然后在Page1.php你可以得到类似的东西:

var attente = new Ajax.PeriodicalUpdater('attente', 'Page2.php', { 
        frequency: 1,
        method:'get',
        onSuccess: function(transport){
          var response = transport.responseText || "no response text";
          alert("Success! \n\n" + response);
          // compare response with 'Stop' 
          if(response == 'Stop') {
             attente.stop();
          }
        },
        onFailure: function(){ alert('Something went wrong...') }
      });

有关详细信息,请参阅:

http://www.prototypejs.org/learn/introduction-to-ajax

http://www.prototypejs.org/api/ajax/periodicalupdater

关于在Page2.php上插入prototype.js的部分,答案是:你可能不需要它(通常它应该在head部分下面)。