【问题标题】:Request URI too large (414)请求 URI 太大 (414)
【发布时间】:2013-05-23 16:34:22
【问题描述】:

我通过$.getJSON发送GET请求,发送的数据真的很大。我需要在处理完我的数据后得到一个结果,所以POSTing 它似乎不是一个解决方案。任何想法?发送的数据是一个编码为 json 的字符串。我考虑过不先编码就发送它,作为一个数组,但是我的响应将只是“数组”,所以之后没有办法解码它。

【问题讨论】:

  • base64 或类似的编码,然后在服务器端再次解码?
  • 在获取请求中发送 json 似乎有点奇怪。为什么不发布解决方案?我们能否进一步了解您要发送的内容的结构?谢谢。
  • @FDL — base64 将使数据更大。它旨在允许将二进制数据编码为文本,它不是一种压缩算法。
  • @Tom 我得到了例如一个 facebook 用户的笔记。一张便条可能和一本小说一样长。我需要发布这些数据。我不知道我是否能找到任何可以将其转换为足够短的编码。
  • 那你有没有尝试过发布它并使用分块传输编码?此外,是的,Base64 编码虽然有时一个非常好的主意并不能帮助您解决大小问题。

标签: php jquery ajax json request


【解决方案1】:

使用$.ajax

这样:

$.ajax({
  dataType: "json",
  type:'POST',
  url: url,
  data: data,
  success: function(response){...}
});

毕竟$.getJSON 它只是$.ajax 的包装

【讨论】:

  • 如何存储响应?响应可能与请求一样大
  • 你不必担心,AFAIK。浏览器处理它 - 只需使用 php 编写它,但是你需要它。
  • @Tom 我怎样才能得到回复?这就是我仍然不明白的。使用 getJson 我有$.getJSON("myphp.php",{data:"data"},function(response){//handle response});。我该怎么做?
  • 选项中有success: function(response) {//handle response}
  • 另请参阅$.post() 以获得另一个简化。
【解决方案2】:

如果您需要发送超过 URL 长度限制的大量数据,那么您要么必须找到某种方法以更少的字符来表达该数据,要么必须使用 POST。所以你必须使用 XHR。

我需要在处理完我的数据后得到一个结果,所以发布它似乎不是一个解决方案。

使用 POST 不应成为障碍。

如果您依赖 JSON-P 进行跨域请求,那么您将不得不使用 bypass the same origin policy 的替代方法,例如代理的 CORS。

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2014-03-28
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多