JSONP 响应被截断
Posted
技术标签:
【中文标题】JSONP 响应被截断【英文标题】:JSONP response is getting trucated 【发布时间】:2014-05-15 03:30:11 【问题描述】:我正在尝试在跨平台中使用 JSONP 响应。我正在使用 html 和 JQuery Mobile。有时,当没有更多记录时,在固定字符数后响应会自动被截断,不会像 JSON 格式那样读取完整的响应。我无法得到完整的回应。 然而,相同的响应对 JSON 工作正常,并且可以在 android 中轻松使用。
在跨平台应用程序中,当我在浏览器上检查时,它被截断了,有人对此有想法吗? 如果有人能提供帮助,那将是非常可观的
更新
在 Apache Tomcat 上运行良好,但对于 JBOSS 应用程序服务器,我遇到了这个问题。 maxHttpHeaderSize 可能是个问题。请告诉我 maxHttpHeaderSize 对此有何影响..?
【问题讨论】:
请贴一些代码 请再读一遍我的问题,我不认为代码会帮助你。我正在使用普通的 ajax 调用,并且对于较少的字符工作正常,但是当没有字符很大时,它会被截断,因为我没有得到正确的响应 当它工作时,您会返回多少条记录?当它不起作用时,您返回了多少条记录?当它不起作用时,您希望返回多少条记录?请求何时起作用和不起作用需要多长时间?我认为代码肯定会有所帮助。我在 google 上搜索了“jquery ajax size limit”并得到了一些有趣的线索。 可能取决于设备本身,例如在服务器端(例如 php 的最大帖子大小),响应可能具有要读取的最大长度...是否有可能溢出响应分成几部分? 服务是 .NET 吗? javascriptSerializer 有一个限制 json 长度的参数。它可以像这样增加:myserializer.MaxJsonLength = Int32.MaxValue; 【参考方案1】:我认为接受的答案不能正确描述您的问题,因为您的问题在于响应,并且大小限制通常与请求 url 长度有关...网络上有许多大于 8kb 的网页他们被送回去就好了。
我遇到了一个看起来很相似的问题:我在 nginex 后面使用了 tomcat,显然 nginex 在大约 64kb 之后将响应截断了几个部分。看起来 jquery 不知道如何处理多部分响应(它可能比 jquery 更深入,我不确定)。当我在本地使用 Tomcat w/o nginex 并使用相同的数据执行相同操作时,它运行良好,因此可能 Tomcat 中的幻数不同。
为了绕过这个问题(没找到解决方法),我只好限制查询要求的元素数量,一直要求直到我得到所有元素(所以要求0-99 ,然后是 100-199 等,直到我得到少于 100 条记录),这样返回的幻数字节就不会触发斩波机制。
【讨论】:
【参考方案2】:JSON 可以通过 POST 请求处理,JSONP 始终是 GET,并且大多数网络服务器将 GET 请求的长度限制为 8192 字节 (8KB)
【讨论】:
有什么解决办法吗? 当我遇到它时,我不得不更改我的应用程序的逻辑,将它发送到服务器的数据拆分成单独的、更小的请求,因为我无权访问服务主机来更改默认值。以上是关于JSONP 响应被截断的主要内容,如果未能解决你的问题,请参考以下文章