无法通过XMLHttpRequest发送大型json数据--javascript

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法通过XMLHttpRequest发送大型json数据--javascript相关的知识,希望对你有一定的参考价值。

我需要将一个json变量作为参数传递给php脚本,该脚本将处理json数据并将其存储在Database中。

首先,在javascript中,我正在测试发送这样的数据:

$('#sendResult').load('http://localhost/myurl/phpFile.php?mrData=' + jsonArrFinal);

传递小记录时效果很好(记录可能会有所不同,这取决于用户插入的数据)。

但是当我增加记录时,它开始在控制台中出现此错误:

414 (Request-URI Too Long)

我已将js代码更改为:

var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost/myurl/phpFile.php?mrData=' + jsonArrFinal );
xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
xhr.send();

但仍然出现与POST方法相同的错误。我检查了json param,它有5439个字符。

我该如何解决这个问题?提前致谢。

请注意,长度可以超过5439个字符。

答案

不要使用GET请求。

您正在存储数据,因此您应该使用POST请求。

使用$.post而不是$.load并编写自己的逻辑以在done()处理程序中显示响应。


我已将js代码更改为:

您需要将数据放在请求的正文中。 POST请求不会更改您可以在URL中放入多少数据的规则。


$.post("http://localhost/myurl/phpFile.php", { mrData: jsonArrFinal })
 .done( data => $("#sendResult").html(data) );

以上是关于无法通过XMLHttpRequest发送大型json数据--javascript的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 拓展开发 Service Worker 无法使用 XMLHttpRequest 发送 HTTP 请求

无法通过 Shopware 6 中的 XmlHttpRequest 请求 PageController

Angular 测试失败,无法在“XMLHttpRequest”上执行“发送”

XMLHttpRequest如何加载视频并播放

将大型响应 Json 作为多部分数据或多个部分发送

XMLHttpRequest 不发送 POST 数据