php post form max input vars奇怪的行为

时间:2018-03-27 08:43:11

标签: ckeditor

我只发布了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);
        }
    })
});

1 个答案:

答案 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的代码,看看会很有用。