2011-02-16 69 views
1

我想在PHP條件下發送PHP頭文件。那可能嗎?在JavaScript條件內的PHP頭文件?

if ($('body').hasClass('browserChrome')) { 
    <?php 
     header("Content-Type: application/x-chrome-extension"); 
     header('Content-Disposition: attachment; filename="http://example.com/file.crx"'); 
     header("Pragma: no-cache"); 
     header("Expires: 0"); 
    ?> 
} 

回答

3

這是行不通的。首先,您的Web服務器將執行PHP腳本,產生帶有JavaScript的HTML頁面。然後發送給用戶的Web客戶端,該客戶端將顯示HTML並執行JavaScript。在JavaScript解釋器獲得它的時候,沒有任何PHP代碼的痕跡。

2

不,這是不可能的。 (好吧,更像是,它不是有意義的或有用的,並且很可能會造成頁面錯誤。)

PHP代碼運行服務器上發送之前的頁面了,撒嬌的鸛法案,其到客戶端瀏覽器的方式。通過良好的天氣和惡劣的風暴,冰雪,狩獵派對和污染,鸛會長時間飛行。最後,當他們耐心地等待他們的新寶貝網頁出現時,鸛會到達您的客戶。

然後,突然,- 〜p00f〜 -和頁面到達。在這個點,頁面中的JavaScript運行。

2

如果你需要從JS(只)發送一些頭,你可以使用對象的XMLHttpRequest的方法setRequestHeader

new XMLHttpRequest(); 
//or 
new ActiveXObject(...) for IE 
... 
xmlHttp.open(... 
xmlHttp.setRequestHeader("Cache-Control", "no-cache, must-revalidate"); 
xmlHttp.setRequestHeader("Pragma", "no-cache"); 

或者可以用一些方法JS框架(jQuery的,原型,等)

但作爲已經回答了,是不是在正確的JS寫PHP代碼

1

看來,如果你試圖下載通過Java類文件cript,更像是將文件推送到客戶端瀏覽器。 但是,正如已經回答的那樣,代碼無法工作,因爲它發生在服務器上,並且js在客戶端上運行。

爲了達到這個目的,您需要使用javascript本身,在這種情況下,使用ajax來下載 相關內容。

你可能會發現如何在這裏下載javascript文件:http://www.codeproject.com/KB/scripting/FileDownloadUsingJScript.aspx