我只发布了2个变量。如果我使用下面的表单进行直接POST,它就可以工作。
<form action="http://someapi/post_html" method="post" enctype="multipart/form-data">
<input type="text" name="name" >
<textarea name="htmltemplate"> a html template of 3000 characters
</textarea>
<button type="submit">Submit</button>
</form>
当我使用ajax发布数据时,我实际上从服务器max_input_vars limit of 1000 exceeded
获得了响应。当我只使用ajax发送2个变量来获取该消息时,怎么可能呢?
我也尝试使用curl进行POST并最终收到相同的消息。
$('form.ajax').on('submit',function() {
var formData = $('form.ajax').serialize();
formData += CKEDITOR.instances.textboxwyswygs.getData();
event.preventDefault();
$.ajax({
url: "http://someapi/post_html",
method:"POST",
data: formData,
success: function(response){
console.log(response);
}
})
});
答案 0 :(得分:0)
您的formData
看起来坏了 - serialize()
返回一个JSON字符串,CKEditor getData()
返回一个HTML字符串。
尝试此操作:在调用serialize之前将CKEditor值同步到表单中,然后您的JSON将是正确的。尝试console.log(formData)
在发送之前检查formData。因此,在没有syncrhonziation的情况下提交表单实际上根本不会发送CKE内容。这应该在服务器端检查,以查看它获得了什么输入。
此外,ajax函数data
成员的值应该是正确的JSON,服务器可能会以奇怪的方式处理它。
其他问题:$('form.ajax')
实际上并不针对您的HTML。这是一个正确的例子吗?
event
变量看起来未定义,请尝试将其命名为e
并将其作为参数添加到.on('submit',function(e){..}
。
您没有显示实际用CKEditor替换textarea的代码,看看会很有用。