CakePHP 2中的AJAX加载

时间:2012-05-17 17:27:59

标签: html ajax cakephp jquery cakephp-2.0

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

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

我通过谷歌搜索发现的示例,当用户点击按钮时,会发出一个AJAX请求并在该div中显示结果。

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

关于我的文件结构,我应该在哪里放置AJAX请求? 我应该删除 showResults 方法中的行,并在AJAX请求成功时运行其他操作吗?

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

// 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);
}

1 个答案:

答案 0 :(得分:0)

在我看来,就像你抓住网络服务然后通过cakephp传递数据一样。这意味着它看起来并不像你在使用ajax。

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

除非您在页面顶部加载div,否则可以使用jquery将结果div从现在加载到数据。

只需2美分。