0

我们如何使用 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编码,我使用了GETfor 的方法,我可以在函数内部AJAX指定查询的 URL 。我不知道怎么用蛋糕做。PHPGET

4

1 回答 1

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

于 2013-07-07T11:56:28.933 回答