我在CakePHP中遇到AJAX问题。我在一个视图中有两种不同的AJAX表单。第一个AJAX表单效果很好,但另一个表单不能正常工作。当我调用第二个AJAX时,它不会将此表单中的数据设置为$this->request->data
,但AJAX将正常运行。之后,它将更新<div id="about"></div>
。奇怪的是,在div更新后我尝试再次通过这个表单发送数据,它工作,它将更新我的数据库中的数据。此外,当我在视图中只有第二个AJAX时,它将正常工作,并在我第一次通过它发送数据时发送数据。
这是我的代码:
这是一个视图文件:
<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,
));
?>
我还在<?php echo $this->Js->writeBuffer(); ?>
之前的default.ctp中添加了</body>
。
你有什么想法,哪里有问题?感谢
答案 0 :(得分:1)
我无法重现您的确切问题,但我想我知道这个问题。您的第二个表单是在第一个表单内创建的。您需要将echo $this->Form->end();
添加到两个表单的末尾。
此外,表单将使用相同的ID创建。虽然这不是造成问题的原因,但仍然不好。我建议你接受thaJeztah的建议,并在$this->Form->create()
内手动指定一个ID。