1

我正在努力寻找一种方法来在我返回的对象中发回 JSON(' running Coldfusion8' )目前我正在Ajax应要求发回这个:

{
 "SUCCESS":true,
 "DATA": "JSON someData",
 "COUNT":10
 }

我也有仅内容的 Ajax 请求,我只是DATA像这样发回部分:

return "HTML someData"

通过这种方式,我可以发送压缩和二进制 gzip 压缩的 HTML,它运行良好并将“有效负载”从 60k 数据减少到 2-3k。

由于我的页面必须离线可用,我已经开始在客户端上进行所有标记增强,并且只从我的数据库发送 JSON 数据(我猜应该是这样)。但是,我的 JSON 字符串比我发送的初始 HTML 大得多(比如 10k JSON,需要将其放入我需要创建的元素中,而 2-3k 准备使用的片段)。所以我用额外的带宽和客户端处理来惩罚自己。

为了解决这个问题,我开始尝试压缩我的 JSON 字符串(有效),以及我是否可以像在我的第二个示例中那样将其发回(无效......):

return "JSON someData"    

如果我text/JSON在返回标头和 JSON 中指定ajax-returnformat,我只会得到Coldfusion错误,告诉我Unable to serialize binary data to JSON

问题是否有可能发回 JSON- gzipped
?如果是这样,我需要在我的 AJAX 调用(returnformat?)和服务器端指定什么以使其工作并且不会每次都失败。

谢谢!

(注意:我不会问,是否可以在服务器上设置 JSON GZIP 编码!)

4

1 回答 1

0

Ok. You can "beat the returntype" by using:

<cfif variables.alredayBinary EQ "false">
    <cfcontent reset="no" variable="#CharsetDecode(passBackObject, "UTF-8")#" />
<cfelse>
    <cfcontent reset="no" variable="#passBackObject#" />    
</cfif>
<cfreturn  />

Returning nothing, because as I understand <cfcontent> goes straight back to the client. Maybe useful for someone else, too.

于 2012-12-11T23:57:25.130 回答