CKEditor + Yii加载了AJAX:$ _POST不包含更新的值

时间:2011-05-26 23:48:31

标签: php ajax ckeditor yii

简而言之:

  1. 我正在使用Yii Framework

  2. 我的页面上有一个Ckeditor窗口(php / yii框架 - 工作正常)

  3. 当我点击一个按钮时,正在生成一个新的CKeditor窗口并通过AJAX调用显示

  4. 问题:这个新的CKEditor窗口正确显示存储在数据库中的文本但是:当我点击“保存”(与表格的其余部分一起生成的ajax按钮)时,来自这个新的CKeditor窗口的值将是不保存:CKeditor发回从数据库中获取的旧值。

  5. 当我删除Ckeditor并离开普通<textarea>时:一切正常,所以我知道控制器没问题。

    拜托,有没有人经历过这样的事情?

2 个答案:

答案 0 :(得分:2)

听起来像是一个典型的后AJAX JS绑定问题。 :)根据出了什么问题,有几种可能性来解决它。

Yii论坛中的这篇文章应该是你的钱,这是我得到大部分建议的地方: http://www.yiiframework.com/forum/index.php?/topic/9341-ckeditor-widget-in-a-cactiveform/

  1. 使用已解决此问题的小部件Yii扩展程序(NHCKEditor?
  2. 向提交按钮添加onClick回调,将CKEditor内容保存到隐藏的'textarea' ('onclick'=>'CKEDITOR.instances.TEXTAREA_ID.updateElement()',
  3. Use jQuery to get the data from the CKEditor iFrame在任何地方使用...... AJAX验证等
  4. 祝你好运!

答案 1 :(得分:2)

您可以在验证之前让CKEDITOR更新textarea,并且clientside / ajax验证将按预期工作:

<?php $form = $this->beginWidget('CActiveForm', array(
    'enableAjaxValidation' => true,   // one or both
    'enableClientValidation' => true, // one or both
    'clientOptions' => array(
        'validateOnSubmit' => true,   // optional
        'beforeValidate' => new CJavaScriptExpression('function(form) {
            for(var instanceName in CKEDITOR.instances) { 
                CKEDITOR.instances[instanceName].updateElement();
            }
            return true;
        }'),
    ),
)); ?>