我们如何用cakephp和ajax检查表是否为空?在我的 index.ctp 中,我有一个图片,当点击它时,它将通知用户表是否为空。如果它是空的,则会出现一个警告框,如果不是,它将被重定向到另一个页面。
<?php
echo $this->Html->image('movie.png', array('onclick'=>'check()'));
?>
JAVASCRIPT:
function check(){
//check browser comp, create an object
object.GET("GET", url, false);
//rest of the code here
}
MoviesController.php
function index(){
//something here
$moviecount=$this->Movies->find('count');
$this->set('moviecount', $moviecount);
}
我知道如何使用普通的PHP
编码,但使用cakephp
,并且因为我是新的,我还不知道。对于常规PHP
编码,我使用了GET
AJAX
方法,我可以在PHP
函数中指定GET
查询的网址。我不知道怎么用蛋糕做。
答案 0 :(得分:0)
您需要将布局设置为AJAX,然后渲染视图。我强烈建议您不要使用index()
方法。相反,您可以在whatever()
中定义MoviesController
方法:
function whatever(){
//It is not a bad idea to do this only for GET - use the RequestHandlerComponent
$this->layout = 'ajax';
$moviecount=$this->Movies->find('count');
$this->set('moviecount', $moviecount);
}
在视图文件中whatever.ctp
:
echo json_encode(array('moviecount' = $moviecount));
//It is a good idea to add an isset() ternary check here like:
// echo isset($moviecount) ? json_encode(array('moviecount' => $moviecount)) : json_encode(false);
请注意,我正在创建一个数组并将其编码为JSON。这是将变量转换为JSON和从JSON转换变量的方法。当然要解码使用json_decode()
。
客户端代码实际上取决于您用于进行AJAX调用的内容,但让我们说调用成功并且您将数据返回到data
变量中:
//Make the AJAX call to example.com/movies/whatever via GET
//Check what data is but it should definitely be an array
if (data['moviecount']) {
//If moviecount is 0 it will go in the else statement - 0 i falsey
window.location = 'example.com/redirect/url';
} else {
alert('No records');
}
我建议不要使用alert()
通知用户没有记录。最好把它放在页面的某个地方 - 在某些div或其他什么。由于这是一个AJAX请求,因此可以重复多次。在这种情况下,连续使用alert()
并不是真正的用户友好。