繁体   English   中英

Ajax在第一次尝试时不发送textarea(CKEditor)的值,但是在第二次尝试时发送

[英]Ajax doesn't send the value of a textarea (CKEditor) on the first try, but it sends it on the second try

我的HTML中有一个加载CKEditor 4的文本区域。然后,我会将HTML表单的数据发送到处理输入的PHP文件。

       $.ajax({
            xhr: function(){
                //blah blah blah
                return XHR;
            },
            type: "POST",
            url: "process.php",
            data: formData,
            processData: false,
            contentType: false,
            mimeType: "multipart/form-data",
            success: function (response) {
                //blah blah blah
            },
            error: function(XHR, textStatus, error){
               //blah blah blah
            }
        });

在PHP文件中,我首先清理所有输入,然后将它们传递到数据库。 事实证明,我第一次按下“提交”按钮时,不是通过ajax发送页面中textarea的值(其名称为“描述”)(我已通过将$ _POST []的内容写入服务器上的一个文件,以方便调试过程),但是第二次我按HTML表单上的Submit按钮时,说明textarea的值没有问题!

我首先假设这可能是由于描述textarea的值包含HTML代码并且被PHP清除了。 但是我为此删除了卫生用品,问题仍然存在。 到目前为止,我已经编写了数千行代码,但是如果需要的话,我不介意透露更多代码。 我只是避免这样做,以防止帖子过长。

任何帮助表示赞赏。 提前致谢。

编辑这是我填写formData变量的方式:

   $("#form").submit(function (event) {
        event.preventDefault();
        var formData = new FormData(this);
        loading_start();
        submitForm(formData);
    });

在提交此表单期间,我需要同时上传文件。

如果不需要将文件上传到服务器,请尝试使用.val()函数获取textarea内容。

我发现了导致这种奇怪行为的问题。 为了将来参考,需要先更新CKEditor,然后才能提交保存其数据的textarea的值。 要强制CKEditor进行自我更新,可以使用以下代码:

   for(var instanceName in CKEDITOR.instances)
            CKEDITOR.instances[instanceName].updateElement();

以上代码的功劳归功于已在此处发布代码的用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM