2010-10-14 33 views
1

我有一个用户模块,用户可以从配置文件页面设置他们的状态消息(tweet)。Cakephp:通过Ajax保存表格

alt text

当有人点击分享它应该去的动作并保存状态信息。我不确定如何在CakePHP中执行此操作。

我想用jQuery。如果你能指点我正确的文件。这将是很大的帮助

我是新来的Ajax。

回答

2

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

一个示例用法是:用HTML从控制器返回

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

元件#content的内容将被改变。

在上述示例中将提交ajax表单的操作中,add()可能需要在检测到ajax请求时将布局更改为ajax。您可以使用isAjax()方法和控制器的$layout属性来执行此操作。

+0

我讨厌劫持一个讨论,但我与Js助手有问题。 (拉蒙,你上周试图回答我的问题http://stackoverflow.com/questions/3901906/how-to-use-js-submit-in-cakephp)。 “共享”在submit()选项数组中是指什么?这是否适合你Harsha? – 2010-10-15 17:00:10

+0

@Logic艺术家:谢谢你指出。我已更正了该片段。 – 2010-10-15 17:15:48

+0

@logic nope我无法得到它的工作。 – 2010-11-12 09:30:05

1

通过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. 附加由从事件处理程序返回false履行定期提交Ajax调用上的document.ready提交事件处理程序(不内联)
  3. 防止形式。

希望有所帮助。

+0

感谢罗布。将尝试它,并回到你:D – 2010-10-14 12:17:00