如何使用cakephp和AJAX检查表是否为空?

时间:2013-07-07 06:09:03

标签: javascript ajax cakephp

我们如何用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查询的网址。我不知道怎么用蛋糕做。

1 个答案:

答案 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()并不是真正的用户友好。