在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);
}
答案 0 :(得分:0)
在我看来,就像你抓住网络服务然后通过cakephp传递数据一样。这意味着它看起来并不像你在使用ajax。
由于您似乎已经在使用jquery,我建议您使用jquery的ajax方法[http://api.jquery.com/jQuery.ajax/]连接到twitter。因此,您不仅会删除showResults(),还会删除getSomeResults()。如果您需要刷新此信息,可以将此ajax调用设置为函数并定期调用它。
除非您在页面顶部加载div,否则可以使用jquery将结果div从现在加载到数据。
只需2美分。