Trying to integrate CakePHP and jQuery
Posted
by user198003
on Stack Overflow
See other posts from Stack Overflow
or by user198003
Published on 2010-03-03T14:08:05Z
Indexed on
2010/06/07
23:02 UTC
Read the original article
Hit count: 275
Trying to integrate CakePHP and jQuery, using next example
http://bakery.cakephp.org/articles/view/dynamic-select-boxes-with-ajax-jquery
What I want is to when user change first option element, to automaticly fill second select option box with proper values. But, nothing happens, if you can help me why.
So, there is a Invoice add form (add.ctp), with next code...
<?php echo $form->create('Invoice');?>
<?php echo $javascript->link('jquery.js');
$category = array('1' => 'First', '4' => 'Fourth', '7' => 'Seventh');
echo $form->input('client_id', array('options' => $category, 'empty' => 'Choose:'));
echo $form->select('clientBank_id', array("Choose category first"), null, null, false);
?>
<script>
$("#InvoiceClientId").change(function () {
$.post('/invoices/listTitleByCategory/' + $(this).val(), function(data) {
$("#InvoiceClientBankId").empty().append(data);
}, 'html');
})
</script>
Also, there is controller (invoices_controller.php):
<?php
var $name = 'Invoices';
var $helpers = array('Html', 'Form', 'Time', 'Number', 'Javascript');
var $paginate = array('order' => array('Invoice.pinned DESC', 'Invoice.invoiceNumber'));
var $components = array('RequestHandler');
function beforeRender(){
// prevent useless warnings for Ajax
if($this->RequestHandler->isAjax()){
Configure::write('debug', 0);
}
}
// etc...
function listTitleByCategory($category = "") {
$this->layout = 'ajax';
$this->beforeRender();
$this->autoRender = false;
$data = $this->Invoice->Client->find('list');
echo "<option value=0>just for testing...</option>";
foreach($data as $key => $val) {
echo "<option value=$key>$val</option>";
}
}
?>
Please, if you can help me solving this. Thank you in advance!
© Stack Overflow or respective owner