如何从页面的源代码隐藏json对象?

时间:2010-01-11 05:40:49

标签: php javascript json

我在我的php文件中使用json对象,但我不希望我的json对象在源代码中显示,因为它会大大增加我的页面大小。

这就是我在php中做的事情

$json = new Services_JSON();
$arr = array();
$qs=mysql_query("my own query");
while($obj = mysql_fetch_object($qs))
{
    $arr[] = $obj;
}
$total=sizeof($arr);
$jsn_obj='{"abc":'.$json->encode($arr).',"totalrow":"'.$total.'"}';

这是javascript

echo '<script language=\'javascript\'>
var dataref = new Object();
dataref = eval('.$jsn_obj.');
</script>';

但是我想从我的源码中隐藏这个$ jsn_obj对象值,我该怎么做?请帮助!!

3 个答案:

答案 0 :(得分:6)

我不确定你的问题有什么方法,除了改变你的想法是否完全是一个问题(它不是,真的)。

如果不输出JSON对象,则无法在页面中使用它。获取对象的唯一方法是为它创建单独的AJAX请求。如果您这样做,那么您仍然会传输 完全相同的字节数 ,但您现在已经添加了额外HTTP请求的开销(它将比原来的更大,因为传输上现在有HTTP标头)。这种方式在页面加载时也会变慢,因为您必须加载页面,然后发送AJAX请求并运行结果。

有更好的方法来管理您的网页大小。 JSON只是文本,因此您应该查看server-side solution to zip your content, like mod_deflate。 mod_deflate在动态PHP输出和静态页面上运行得很好。如果您无法控制Web服务器,则可以使用PHP的built in zlib compression

答案 1 :(得分:0)

不是直接将JSON日期写入文档,而是可以使用XMLHttpRequest或使用像JQuery这样的库在脚本运行时加载JSON数据。

答案 2 :(得分:0)

这在很大程度上取决于你的json数据。如果您在html中内联打印的数据很大,您可能需要考虑使用ajax来加载json数据。假设您希望加载页面的速度更快,即使没有数据也是如此。

如果数据不是那么大,请尝试保持数据内联,而不需要额外的http请求。要加快页面速度,请尝试使用YSlow!看看你可以优化的其他领域。