Javascript使用表单发布JSON数据,但JSON在PHP中并不完整


Javascript post JSON data using form, but the JSON is not complete in PHP

我有一些png的base64字符串,我想把它们传递给服务器并保存png文件。

我在javascript中的表单如下:

var $form = $("#downloadForm");
if ($form.length == 0) {
    $form = $("<form>").attr({ "target": "_blank", "id": "downloadForm",
        "method": "POST", "action": "keyword-cmp-download" }).hide();
    $("body").append($form);
}
$form.find("input").remove();
var args = {'imgs': JSON.stringify(base64_list)};
console.log(JSON.stringify(base64_list));
for (var field in args) {
    $form.append($("<input>").attr({"value":args[field], "name":field}));
}
$form.submit();

在php中,代码如下:

$json = Input::get('imgs'); // $json = __POST('imgs');
return $json;

但是,在PHP中返回的$json没有完成。它是JSON.stringify(base64_list)的一部分。当我尝试调用json_decode($json)时,json_last_error()返回错误代码4。

我在php.ini中设置了post_max_size = 2048M,在httpd.conf中设置了LimitRequestBody 2147483647

请帮我找出问题,非常感谢。

更新:JSON.stringify(base64_list).length返回769283但strlen($json)返回524288

通过将<input>更改为<textarea>来解决。

由于chrome和其他一些浏览器中<input>maxlength实际上是524288,因此设置<input maxlength = '52428800'>不起作用。解决这个问题的方法是使用CCD_ 16,它似乎没有CCD_ 17的限制。

感谢所有