[英]React - 1st file upload to Spring API doesn't work, try again and it works fine on second try?
[英]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.