2014-02-09 51 views
0

我有一個JavaScript文件在我的網頁中調用。它只有一個變種:fwrite php,文件沒有真正保存?

var tab = [ "img1.jpg" , 
      "img2.jpg" , 
      .......... , 
      "img100.jpg" 
      ] 

"img_i_.jpg"tab是從我的數據基礎。

我寫了一個php代碼來更新這個文件。

... 

$res = mysql_query($sql) or die(mysql_error()); 

$script="var tab= [\n"; 

while($r = mysql_fetch_assoc($res)) 
    $script .= "\t\"" . $r['name']"\",\n"; 

$script = $script."];\n"; 

$fileName = fopen("js/tab.js", "w"); 
fwrite($fileName, $script); 
fclose($fileName); 

... 

當我檢查出我的js文件,所有編寫正確,但是當我重裝我的網頁,一切都沒有改變。

奇怪的是,當我手動編輯該js文件,然後保存它,然後我的網頁在重新加載後更改。

爲什麼?以及如何解決它?謝謝

+0

您的瀏覽器可能會緩存js文件 –

+0

,但是當我手動編輯它時,它爲什麼不緩存? – David

+1

瀏覽器有時會使用緩存做奇怪的事情。通過將一個隨機字符串放到你的js include(這將刪除任何緩存)的末尾來進行測試 - 例如'' –

回答

1

您可能正在將文件寫入其他位置。檢查運行php頁面的當前目錄,並嘗試指定fopen的絕對路徑而不是相對路徑。

dirname(realpath(__FILE__))將返回存儲當前php文件的文件夾的路徑,因此您可以通過該路徑生成絕對路徑。

編輯:我也建議在fopen周圍做一些錯誤檢查,以便知道文件是否真的打開。


額外

你真的應該改變你的mysql_*調用至少mysqli_*PDO。原始的mysql擴展名是舊的,不支持預先準備好的語句,並且已被棄用(並且由於刪除)。

+0

錯誤路徑?不,因爲當我檢查更新的文件時,所有內容都正確寫入 – David

+0

在這種情況下,它是一個緩存問題。瀏覽器有不同的政策。通常情況下,如果緩存的文件太舊或者您直接請求它,則會重新載入,但不會以其他方式重新載入。 – T0xicCode

+0

我會檢查一下, – David