我使用以下代码创建表单:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'contacts-form',
'enableAjaxValidation'=>false,
)); ?>
有没有办法通过AJAX提交表单?请记住,我不是在谈论AJAX验证。
答案 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”库现在还没有削减它。