2013-02-22 13 views
0

我在CakePHP中遇到了AJAX問題。在一個視圖中我有兩種不同的AJAX形式。第一個AJAX表單運行良好,但另一個無法正常工作。當我調用第二個AJAX時,它不會將此表單中的數據設置爲$this->request->data,但AJAX將正常運行。之後,它將更新<div id="about"></div>。好奇的是,在div更新後,我嘗試再次通過這個表單發送數據,它可以工作,它會更新我的數據庫中的數據。另外,當我在視圖中只有第二個AJAX時,它將正常工作,並在我通過它發送數據時第一次發送數據。2在同一視圖中的AJAX調用(CakePHP 2.3)

這裏是我的代碼:

這是一個視圖文件:

<div id="price-list"> 
    <?php echo $user['User']['price_list']; ?> 
</div> 

<?php 
    echo $this->Form->create('User'); 
    echo $this->Form->input('User.price_list', array('label' => false)); 
    echo $this->Js->submit('Save', array(
     'url' => array('controller' => 'users', 'action' => 'ajax_edit_price_list'), 
     'update' => '#price-list', 
     'buffer' => false, 
    )); 
?> 

<div id="about"> 
    <?php echo $user['User']['about']; ?> 
</div> 

<?php 
    echo $this->Form->create('User'); 
    echo $this->Form->input('User.about', array('label' => false)); 
    echo $this->Js->submit('Save', array(
     'url' => array('controller' => 'users', 'action' => 'ajax_edit_about'), 
     'update' => '#about', 
     'buffer' => false, 
    )); 
?> 

我也曾在我default.thtml中</body>前追加<?php echo $this->Js->writeBuffer(); ?>

你有什麼想法,哪裏可以成爲問題?謝謝

+0

您可以添加生成的HTML的相關部分嗎?最重要的是由CakePHP生成的JavaScript?我懷疑CakePhp會感到困惑,因爲兩種形式都是爲同一個「模型」生成的,並且可能會得到相同的「id」。爲了解決這個問題,你可以在Form-> create()中手動指定一個id,儘管我不確定生成的Ajax JavaScript會自動選擇它。當然,總是可以選擇手動編寫JavaScript代碼,這會給你更大的控制權 – thaJeztah 2013-02-22 22:58:13

+0

非常感謝您的回覆:)問題出在@AdamTaylor寫道,我沒有附加$ this-> Form- >端();在每個表單的結尾處。 – Johny 2013-02-23 18:51:15

回答

1

我不能重現你的確切問題,但我想我知道這個問題。你的第二種形式是在第一種形式中創建的。您需要將echo $this->Form->end();添加到兩個表單的末尾。

此外,窗體正在創建具有相同的ID。雖然這不是導致問題的原因,但它仍然不好。我建議你採取thaJeztah的建議,並在$this->Form->create()內手動指定ID。

+0

非常感謝,你是對的。現在它運作完美。我認爲$ this-> Js-> submit()將完成這項工作而不是$ this-> Form-> end()...再次感謝:) – Johny 2013-02-23 18:53:51

+0

@Johny不客氣!我很高興你的問題已經解決。 – 2013-02-23 19:50:45

+0

@AdamTaylor很好看,我忽略了缺少的Form-> end() – thaJeztah 2013-02-23 23:13:18