簡體   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