CKEDITOR 在首次提交时不通过 ajax 提交数据

Posted

技术标签:

【中文标题】CKEDITOR 在首次提交时不通过 ajax 提交数据【英文标题】:CKEDITOR doesn't submit data via ajax on first submit 【发布时间】:2014-08-15 09:35:55 【问题描述】:

使用 CKEDITOR 时,我的表单在第一次提交时没有向服务器发送数据。如果我单击它一次,它会在没有我输入的情况下发送空字段。但是,如果我再次提交它,它会将输入的数据发送到服务器。所以你需要提交两次才能将数据传递给服务器。

我将 CKEDITOR 与 BBCODE 插件捆绑在一起。

jQuery Ajax

$('form#ajax').on('submit', function()

    var that = $(this),
        url = that.attr('action'),
        type = that.attr('method'),
        data = ;

    that.find('[name]').each(function(index, value)
        var that = $(this),
            name = that.attr('name'),
            value = that.val();

        data[name] = value;
    );

    console.log(data.message); // Outputs on second submit

    $.ajax(
        url: url,
        type: type,
        data: data,
        success: function(response)

            //

        
    );

    return false;
);

表格

 Form::open(array('action' => 'AppsController@sendApp', 'class' => 'app', 'id' => 'ajax')) 

    <div class="form-container">

         Form::label('message', 'Application', array('style' => 'padding-top: 5px')) 

            <textarea name="message" cols="50" rows="6" class="form-control" id="eitor" style="padding-top:5px;"></textarea>


    </div>

         Form::submit('Send Application', array('class' => 'btn btn-core btn-block submit', 'style' => 'margin-top: 5px')) 

 Form::close() 

很抱歉,如果表单语法对您来说很陌生,它是 Laravel Blade。

回顾

第一次提交时,发送到服务器的数据是空的。在第二次提交时,它不是。

【问题讨论】:

您是否尝试过使用浏览器的检查器调试代码? ctrl+shift+i con google chrome,转到 Sources 选项卡,按 ctrl+o 并用你的 javascript 打开文件,现在放置一些断点并检查值,你会发现那里的错误 你能提供一个链接吗?我怀疑这可能与表单标签或表单上的操作有关。 @arieljuod 我已经调试了代码,它没有显示错误。一个 SO 问题是我最后的选择。 @LindyHop 与动作无关。我完全禁用了 AJAX 调用,并简单地在控制台记录了 message 的值,它首先返回空,然后再填充。 这个问题(和答案)类似于 3 年前提出的这个问题。 ***.com/questions/3256510/… 【参考方案1】:

在执行 Ajax 提交之前尝试更新 CKEditor 相关字段,例如:

$('form#ajax').on('submit', function()
    for ( instance in CKEDITOR.instances ) 
        CKEDITOR.instances[instance].updateElement();
    
    //rest of your code

【讨论】:

我完全忘了回来给你更多的代表。这有效:) 完美谢谢! =) 我花了一段时间才意识到 ajax 提交停止工作,因为我刚刚将纯文本区域字段更改为 CKEditor..你为我节省了很多时间 :) 我遇到了同样的问题,并尝试在 beforeSend 回调中使用您的解决方案 $.ajax( 方法但它不起作用(也许我只是搞砸了一些事情)。然后我按照你的建议试了一下,效果很好。 谢谢你,这真的很有帮助,我想知道你是否能解释为什么会发生这种行为?

以上是关于CKEDITOR 在首次提交时不通过 ajax 提交数据的主要内容,如果未能解决你的问题,请参考以下文章

UIDocumentInteractionController 操作/选项菜单在首次启动时不可见

使表单在首次加载时不可见

UITableViewCell 上的圆形 UIImageView 在首次加载时不起作用

使用 Curl 从 Yii2 进行 WP 自动登录在首次加载时不起作用

ckeditor插入或更新在第一次尝试时不起作用

来自ckeditor textarea的ajax表单提交值之后没有通过邮件发送