Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CKEditor+;Yii加载了AJAX:$\u POST不';不包含更新的值_Php_Ajax_Ckeditor_Yii - Fatal编程技术网

Php CKEditor+;Yii加载了AJAX:$\u POST不';不包含更新的值

Php CKEditor+;Yii加载了AJAX:$\u POST不';不包含更新的值,php,ajax,ckeditor,yii,Php,Ajax,Ckeditor,Yii,简言之: 我正在使用Yii框架 我的页面上有一个单一的编辑器窗口(php/yii框架-工作正常) 当我点击一个按钮时,一个新的CKeditor窗口正在生成并通过AJAX调用显示 问题:这个新的CKEditor窗口正确地显示了存储在数据库中的文本,但是:当我点击“保存”(与表单其余部分一起生成的ajax按钮)时,来自这个新的CKEditor窗口的值将不会保存:CKEditor发回它从数据库获得的旧值 当我卸下Ckeditor并保留普通的:一切正常,因此我知道控制器正常 拜托,有人经历过这样的事情吗

简言之:

  • 我正在使用Yii框架

  • 我的页面上有一个单一的编辑器窗口(php/yii框架-工作正常)

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

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

  • 当我卸下Ckeditor并保留普通的
    :一切正常,因此我知道控制器正常


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

    听起来像是典型的后AJAX JS绑定问题根据出现的问题,有几种可能的修复方法

    Yii论坛上的这篇文章应该是你的财富,我从中得到了大部分建议:

  • 使用已解决此问题的widgetized Yii扩展()
  • 将onClick回调添加到submit按钮,该按钮将CKEditor内容保存到隐藏的
    'textarea'('onClick'=>'CKEditor.instances.textarea\u ID.updateElement(),
  • 使用…where.AJAX验证等

  • 祝您好运!

    您可以让CKEDITOR在验证之前更新文本区域,客户端/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;
            }'),
        ),
    )); ?>
    

    谢谢!问题出在两个地方:ajaxSubmitButton和textarea名称:因为所有ckeditor实例都使用相同的模型,但行不同,所以它们都有相同的名称,就像ajaxSubmitButton一样。我使用“onclick”事件手动将ckeditor窗口的内容复制到textarea,并引入了add每个重复实例的传统名称:D现在可以正常工作了,所以我决定放弃ajax加载-我只是无法让它正常工作,现在它们只是被呈现到单独的JuiTabsYii::app()->clientscript->registerScript('duppa'.$thisLanguageID,“commentvalidate之前的函数”。$thisLanguageID.”({var t=CKEDITOR.instances['..CHtml::activeName($model,'description\u translation')。“['.$thisLanguageID.”].$getData();$('textarea[name=\'.CHtml::activeName($model,'description\u translation')。“['.$thisLanguageID.]\']\'])。val(t);返回true;}$(''.\35; closetlumaczeniedalog.$thisLanguageID.)。单击(函数(){BeforeValidate“.$thisLanguageID。“();}”);”;