0

在 CakePHP 2.x 中,我使用此路径向访问者显示结果 example.com/my/showResults * getSomeResults * 函数发出一些 Twitter API 请求,通常持续 5-25 秒。

我需要在我的视图中添加一个“加载 div”。但我无法决定结构。

我在 google 上找到的示例显示,当用户单击按钮时,会发出 AJAX 请求,结果会显示在该 div 中。

但在我的情况下,当页面加载时,该请求将异步完成,当结果可用时,它们将显示在另一个 div 中。

关于我下面的文件结构,我应该把 AJAX 请求放在哪里?当 AJAX 请求成功时,我应该删除showResults方法中的行并运行另一个操作吗?

如果您可以推荐一个结构,我会很高兴,当 AJAX 请求以 CakePHP 2 方式成功时显示结果。谢谢

// appcontroller.php
class AppController extends Controller {
  function getSomeResults() {
        // make some http requests to twitter API
  }
}

// mycontroller.php
class MyController extends AppController {
  public function showResults() {
    $data=$this->getSomeResults();
    $this->set('data', $data);
    $this->render('myelement');
  }
}


// myelement.ctp
<div id="before">
  Please wait loading..
</div>

<div id="results" style="display: none">
  <?php echo $data ?>
</div>


// myscript.js
$(document).ready(function() {
    $("#results").hide();
    setTimeout('$("#results").show();',8000);
}
4

1 回答 1

0

在我看来,就像您正在获取 Web 服务,然后通过 cakephp 传递数据。这意味着它看起来根本不像在使用 ajax。

由于您似乎已经在使用 jquery,我建议您使用 jquery 的 ajax 方法 [http://api.jquery.com/jQuery.ajax/] 连接到 twitter。因此,您不仅要删除 showResults(),而且还要删除 getSomeResults()。如果您需要刷新此信息,您可以将此 ajax 调用设置为一个函数并定期调用它。

除非您在页面顶部有用于加载的 div,否则您可以使用 jquery 将结果 div 从现在加载更改为数据。

只是我的2美分。

于 2012-05-17T19:25:59.473 回答