【问题标题】:Ajax doesn't send the value of a textarea (CKEditor) on the first try, but it sends it on the second tryAjax 在第一次尝试时不会发送 textarea (CKEditor) 的值,但在第二次尝试时会发送它
【发布时间】:2018-05-13 13:07:54
【问题描述】:

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

我首先假设这可能是由于描述文本区域的值包含 HTML 代码并且它是由 PHP 清理的。但是我为它取下了卫生用品,问题仍然存在。到目前为止,我已经编写了数千行代码,但如果需要,我不介意透露更多代码。我只是避免这样做,以防止这篇文章变得不必要的长。

感谢任何帮助。提前致谢。

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

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

而且我需要在提交此表单的过程中同时上传文件。

【问题讨论】:

  • 向我们展示您如何填写formData可能会很有用@
  • @RiggsFolly 感谢您的回答。我添加了我如何填写 formData。

标签: javascript jquery ajax xmlhttprequest ckeditor


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。我需要上传文件到服务器。
【解决方案2】:

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

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

以上代码的功劳归于发布它的用户here

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多