[英]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.