0

Cakephpとajaxでテーブルが空かどうかを確認するにはどうすればよいですか? 私のindex.ctpには、クリックすると、テーブルが空かどうかをユーザーに通知する画像があります。空の場合は警告ボックスが表示され、そうでない場合は別のページにリダイレクトされます。

<?php
echo $this->Html->image('movie.png', array('onclick'=>'check()'));
?>

ジャバスクリプト:

function check(){
//check browser comp, create an object
object.GET("GET", url, false);
//rest of the code here
}

映画コントローラー.php

function index(){
  //something here
  $moviecount=$this->Movies->find('count');
  $this->set('moviecount', $moviecount);
}

私は通常のPHPコーディングを使用してそれを行う方法を知っていますがcakephp、私は新しいので、まだ知りません。通常PHPのコーディングでは、GETメソッド forを使用し、関数内でクエリ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()もちろんデコードにも使えます。

dataクライアント側のコードは、AJAX 呼び出しを行うために何を使用しているかに大きく依存しますが、呼び出しが成功し、変数にデータが返されたとしましょう。

//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 に答える