2010-01-11 76 views
0

iam在我的php文件中使用json對象,但我不想讓我的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從我的源對象的值,我怎麼能做到這一點? ? PLZ的幫助!

+4

這似乎很無用。您將數據從服務器傳遞到瀏覽器,並要求瀏覽器執行解釋工作。你的問題是如何從瀏覽器中隱藏這些信息,但仍然解釋它。您要求瀏覽器執行的任何操作都可以通過某種方式查看。 – 2010-01-11 05:46:31

回答

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

0

這很大程度上取決於您的json數據。如果你在html中內嵌的數據是巨大的,你可能會考慮使用ajax來加載json數據。假設你希望你的頁面加載得更快,即使沒有數據。

如果數據不是那麼大,請儘量保持數據內聯,而不用額外的http請求。要加快你的頁面,請嘗試使用YSlow!看看你可以優化的其他領域。