【问题标题】:Can't send large json data via XMLHttpRequest - javascript无法通过 XMLHttpRequest 发送大型 json 数据 - javascript
【发布时间】:2018-10-04 21:23:45
【问题描述】:

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

首先,在 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 参数,它有 5439 个字符。

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

请注意,长度可以是 5439 个字符的 8 倍以上。

【问题讨论】:

  • 这看起来好像您正在使用“GET”请求来更新您的数据库?
  • 您在具有最大大小的 URL 中传递数据。使用 POST 请求并将数据放入正文中。
  • @JulianReschke 是的,但后来我将脚本更改为 POST 方法,但仍然是同样的错误。 (我已对我的问题进行了编辑,添加了此修改)
  • 你没有改变 URL ('localhost/myurl/phpFile.php?mrData=' + jsonArrFinal) 所以你有同样的问题,在 POST 你必须以这种方式发送 jsonArrFinal http.send(?mrData=.. ...);
  • 你的网址太长,见stackoverflow.com/questions/417142/…

标签: javascript php json xmlhttprequest frontend


【解决方案1】:

不要使用 GET 请求。

您正在存储数据,因此无论如何您都应该使用 POST 请求。

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


我把js代码改成了:

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


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

【讨论】:

  • 我也尝试过发布,请编辑问题。 @昆汀
  • @KevinRodriguez 是的,您使用了 POST,但您仍将其作为 GET 参数附加到查询字符串中。它需要像上面答案中的示例一样在正文中。
  • @Quentin 现在尝试了,但它没有在 url 中添加参数
  • @KevinRodriguez — 不在 URL 中添加参数才是重点
猜你喜欢
  • 1970-01-01
  • 2017-08-23
  • 2023-04-04
  • 2015-02-13
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
相关资源
最近更新 更多