我很难找到一种方法在我正在返回的对象中发回JSON('运行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的即用型片段)。所以我用额外的带宽和客户端处理来惩罚自己。
为了解决方法,我开始尝试gzip我的JSON字符串(工作)以及我是否可以像我的第二个例子一样发送它(不起作用......):
return "JSON someData"
如果我在text/JSON
中的返回标头和JSON中指定ajax-returnformat
,我只会收到Coldfusion
错误,告诉我Unable to serialize binary data to JSON
问题
是否可以发回JSON-gzip?如果是这样,我需要在AJAX调用(returnformat
?)和服务器端指定什么才能使其工作而不是每次都失败。
谢谢!
(注意:我不会问,如果我可以在服务器上设置JSON GZIP编码!)
答案 0 :(得分:0)
确定。您可以使用以下方式“击败返回类型”:
<cfif variables.alredayBinary EQ "false">
<cfcontent reset="no" variable="#CharsetDecode(passBackObject, "UTF-8")#" />
<cfelse>
<cfcontent reset="no" variable="#passBackObject#" />
</cfif>
<cfreturn />
什么都不做,因为我理解<cfcontent>
会直接回到客户端。对其他人也许有用。