Попытки интегрировать CakePHP и JQuery, используя следующий примерПопытка интегрировать CakePHP и JQuery
http://bakery.cakephp.org/articles/view/dynamic-select-boxes-with-ajax-jquery
То, что я хочу, чтобы когда пользователь изменить первый вариант элемент, чтобы автоматически заполнить второе выберите вариант окно с соответствующими значениями , Но ничего не происходит, если вы можете мне помочь.
Итак, есть счет-фактура добавить форму (add.ctp), со следующим кодом ...
<?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>
Кроме того, есть контроллер (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>";
}
}
?>
Пожалуйста , если вы можете помочь мне решить это. Заранее спасибо!
Я еще не достаточно хорошо в Firebug чтобы предложить этот маршрут, но то, что я сделал бы, это разместить предупреждения в вашем коде, отображая каждое из значений в последовательности. Когда вы перемещаете предупреждение на каждую следующую следующую строку, вы будете знать, где выполняется выполнение (строка перед вашим предупреждением). Если все это, кажется, выполняется чисто, я бы использовал LiveHTTPHeaders (FF addon), чтобы узнать, действительно ли отправляется вызов ajax. –
firebug не сложно, и с помощью console.log (// ваше сообщение здесь) вместо alert() намного удобнее –