誰かが私にcakephp 2.3.0でajaxを使用する方法の例を教えてくれるなら、私を助けてください例はこのようなものです
<?php echo $this->html->link('Original', '#',
array('onclick'=>'return false;', 'id'=>'remanufactured-link', 'class'=>'get-type-product-link')); ?>
<div id="content">
</div>
original
リンクをクリックすると、ID content
のdivが変更されます。どのように私はこれをcakephp 2.3.0で行うことができますか?
以下の例を参照してください:
$.ajax({
dataType: "html",
type: "POST",
evalScripts: true,
url: '<?php echo Router::url(array('controller'=>'your-controller','action'=>'your-action'));?>',
data: ({type:'original'}),
success: function (data, textStatus){
$("#div1").html(data);
}
});
AjaxでCakePHPを使用することには、通常のHTML/PHPとAjaxを使用することほど大きな違いはありません。
Cake APPでのajax呼び出しと応答の例を次に示します。
jQuery:
$.ajax({
url: '/types/fetch/original',
cache: false,
type: 'GET',
dataType: 'HTML',
success: function (data) {
$('#context').html(data);
}
});
(設定に合わせてurlパラメータを変更することを忘れないでください)。
これにより、タイプコントローラーにajaxリクエストが行われ、パラメーター 'original'を指定してメソッドfetch()が呼び出されます。
TypesControllerは次のようになります。
class TypesController extends AppController {
public $components = array(
'RequestHandler'
);
public function fetch($type) {
$data = $this->Type->find('all', array(
'conditions'=>array(
'Type.type'=>$type
)
);
$this->set('data', $data);
}
}
RequestHandlerコンポーネントを追加することは、AjaxリクエストをレンダリングするときにCakeが自動的に最小のAjaxレイアウトを使用することを意味します。通常、これはAppControllerに追加されるため、すべてのコントローラーが使用できます。
そして関連するビュー:
/app/View/Types/fetch.ctp
<ul>
<?php foreach($data as $item): ?>
<li><?php echo $item['Type']['name']; ?></li>
<?php endforeach; ?>
</ul>
私はCakePHPとAjaxから始めたばかりですが、これまでに収集したものから、これはより簡単なアプローチのようです。あなたの見解では:
echo $this->Js->link(
'Original',
'#',
array('async' => true,
'update' => 'content',
'id' => 'remanufactured-link'
)
);
<div id="content">
</div>
これは、このビューの呼び出し元のコントローラーについていくつかのことを意味します(たとえば、リンクをクリックすることでインデックスアクションが呼び出されます...)。
あなたはjquery/ajaxで行うことができます
$("#remanufactured-link").click(function(){ whatyouneed.appenTo("#content"); })
whatyouneedは、post/getまたは他の何かに対するデータ応答である可能性があります。