2个AJAX调用在同一个视图中(CakePHP 2.3)

时间:2013-02-22 20:59:32

标签: ajax cakephp

我在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>

你有什么想法,哪里有问题?感谢

1 个答案:

答案 0 :(得分:1)

我无法重现您的确切问题,但我想我知道这个问题。您的第二个表单是在第一个表单内创建的。您需要将echo $this->Form->end();添加到两个表单的末尾。

此外,表单将使用相同的ID创建。虽然这不是造成问题的原因,但仍然不好。我建议你接受thaJeztah的建议,并在$this->Form->create()内手动指定一个ID。