【问题标题】:Cakephp: Saving a Form via AjaxCakephp:通过 Ajax 保存表单
【发布时间】:2010-10-14 07:55:24
【问题描述】:

我有一个用户模块,用户可以在其中从个人资料页面设置他们的状态消息(推文)。

当有人点击分享时,它应该转到一个操作并保存状态消息。我不确定如何在 CakePHP 中做到这一点。

我想使用 jQuery。如果你能指出我正确的文件。会有很大帮助的

我是 Ajax 新手。

【问题讨论】:

    标签: javascript ajax cakephp


    【解决方案1】:

    CakePHP 有一个Js Helper,它默认使用 JQuery 库。 您正在寻找的方法是submit() 方法。

    一个示例用法是:

        <?php echo $form->create('Tweet'); ?>
        <!-- form elements -->
        <?php echo $this->Js->submit('Share',
                                    array(
                                        'update' => '#content'
                                    )
                                ); ?>
    

    元素 #content 的内容将随着控制器返回的 HTML 发生变化。

    在将提交 ajax 表单的操作中,在上面的示例中为 add(),您可能希望在检测到 ajax 请求时将布局更改为 ajax。您可以使用isAjax() 方法和控制器的$layout 属性来做到这一点。

    【讨论】:

    • 我讨厌劫持讨论,但我在使用 Js 助手时遇到了问题。 (拉蒙,你上周试图回答我的问题stackoverflow.com/questions/3901906/…)。 submit() 选项数组中的“共享”指的是什么?这对你有用吗?
    • @Logic 艺术家:感谢您指出这一点。我已经更正了 sn-p。
    • @Harsha:你的问题解决了吗?发布对您有用的内容怎么样?
    【解决方案2】:

    通过 ajax 提交表单的方式与没有使用 CakePHP 的方式完全相同。如果是我,我会这样做......

    在我看来:

    <?php echo $this->Html->script( 
      array( 'vendors/jquery.min', 'customjs' )
      , array( 'inline' => false, 'once' => true ) 
    ) ?>
    
    <?php echo $this->Form->create( ... ) ?>
      ... your form content here ...
    <?php echo $this->Form->end( 'Share' ) ?>
    

    在自定义 Javascript 文件中 (/js/custom.js):

    $(function() {
      $('#your-form' ).submit( function() {
        // make your ajax call
        $.post( ... );
    
        return false; // prevent a new request
      });
    });
    

    最后,创建一个新的控制器和/或操作来处理您的 ajax 调用所请求的 URL。当然,这些只是亮点,但它们说明了关注点的主要分布:

    1. 包含必要的 JS 文件,以便您的视图可以访问它们。
    2. 在 document.ready 上附加提交事件处理程序(非内联)
    3. 通过从事件处理程序返回 false,防止表单在 ajax 调用之后执行其定期安排的提交。

    希望对您有所帮助。

    【讨论】:

    • 谢谢罗伯。会尝试并回到你身边:D
    猜你喜欢
    • 2014-03-06
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多