yii由AJAX提交的CActiveForm

时间:2011-11-30 09:51:48

标签: yii

我使用以下代码创建表单:

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'contacts-form',
    'enableAjaxValidation'=>false,

)); ?>

有没有办法通过AJAX提交表单?请记住,我不是在谈论AJAX验证。

2 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是使用内置的ajaxSubmitButton帮助程序,如下所示:

<?php $form=$this->beginWidget('CActiveForm', array(
  'id'=>'contacts-form',
  'enableAjaxValidation'=>false,
)); ?>
<!-- your form elements here -->
<?php echo CHtml::ajaxSubmitButton(Yii::t('app', 'Submit')); ?>
<?php $this->endWidget(); ?>

这会自动将jQuery AJAX调用绑定到SUbmit按钮,该按钮会将表单值POST到您的from的操作URL。

当然,您也可以自己编写AJAX代码,但Yii也有这个辅助函数。

答案 1 :(得分:1)

这个助手ajaxSubmitButton函数并不是非常有用,特别是因为它使用jquery.ajax()而不使用jquery 1.5+中的“Promise接口”,所以你必须通过成功回调来处理响应。如果他们只使用jquery.submit(),这将更加清晰。老实说,你最好自己动手。

我很失望没有像Yii-Bootstrap或YiiBooster这样的(相对流行的)Bootstrap集成在生成用ajax响应数据刷新自己的表单方面提供了很多东西(我不是在说验证)。我经历了学习和学习的所有麻烦。采用一个框架,最终只能用html / js / css编码我自己的前端演示和逻辑......好吧。

我仍然是Yii爱好者,主要是因为他们的gii生成器和支持具有“行为”的准混合模式。它导致后端的代码干净,但框架在前端和后端有一些增长。视图渲染。他们的“CHtml”库现在还没有削减它。