試圖整合的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插件),看看是否實際上發送ajax調用。 – 2010-03-03 16:34:18
螢火蟲不難,並使用console.log(/ /您的消息在這裏)而不是alert()是更方便 – 2010-04-02 16:46:15