如何在Javascript中压缩GET参数以避免超出浏览器大小限制?

6
我陷入了一个境地,需要进行JSONP Ajax GET请求(跨域),并且我需要将长度> 2000个字符的文档作为参数发送。由于各种原因,我不能将其从JSONP更改为普通请求,并且无法在服务器端维护状态以将请求拆分为多个部分。在这些限制下,是否有一种方法可以在Javascript中对长文本进行压缩,以便将其适合2000 GET限制大小内?我还需要知道是否可以在服务器端轻松解压缩它?因为它是一个GET请求,所以只能以文本形式发送,因此可能无法进行二进制压缩?

你正在尝试发送的文档是什么?你能编码部分吗? - Deebster
3
你可以尝试使用POST并代理到本地服务器进行跨域请求吗?如果你的文档变得太长,以至于即使使用压缩方法也无法将其缩短到小于2000个字符,会发生什么? - mellamokb
如果它是文本,并且您无法切换到POST,则可以尝试使用霍夫曼算法,它可以获得非常好的压缩率。 - Jarry
1
听起来像个糟糕的黑客。JSONP应该被放逐 :) - Evert
1个回答

2

切换到POST原始数据,并使用JSON或XML通过请求保存和发送大型结构。
例如,如果您使用JQuery,则有

jQuery.post( url, [data], [callback], [type] )

数据可以是xmlDoc、jsonObj、html、文本等内容......

而非数据,你可以使用类似于:

$.post("path/to/my/file.php", { func: "yourFunctionName" },
  function(data_returned_from_backend_json){
    //use data_returned_from_backend_json.properties
  }
, "json");

function yourFunctionName()
{
   //save all GET params into a json structure
}

source: http://docs.jquery.com/Post


我已经提到过,我无法更改为POST方式。这是跨域调用。 - Ravish Bhagdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接