Javascript fwrite php,文件是否未真正保存?
我的网页中有一个javascript文件。它只包含一个变量:Javascript fwrite php,文件是否未真正保存?,javascript,php,fwrite,Javascript,Php,Fwrite,我的网页中有一个javascript文件。它只包含一个变量: var tab = [ "img1.jpg" , "img2.jpg" , .......... , "img100.jpg" ] 选项卡中的“img_i_.jpg”来自我的数据库 我已经编写了一个php代码来更新这个文件 ... $res = mysql_query($sql) or die(mysql_error()); $scrip
var tab = [ "img1.jpg" ,
"img2.jpg" ,
.......... ,
"img100.jpg"
]
选项卡
中的“img_i_.jpg”来自我的数据库
我已经编写了一个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文件,然后保存它时,我的网页在重新加载后会发生变化
为什么??如何解决呢?谢谢您可能正在其他位置写入文件。检查运行php页面的当前目录,并尝试指定fopen的绝对路径,而不是相对路径
dirname(realpath(_文件__))
将返回存储当前php文件的文件夹的路径,因此您可以通过该文件夹生成绝对路径
编辑:我还建议对fopen进行一些错误检查,以便知道文件是否真的打开了
额外的
您应该将您的
mysql\u*
调用至少更改为mysqli\u*
或。原始的mysql扩展很旧,不支持预处理语句,已被弃用(即将删除)。您的浏览器可能正在缓存js文件,但当我手动编辑它时,为什么不缓存它?浏览器有时会使用缓存做奇怪的事。通过在js include的末尾添加一个随机字符串(这将删除任何缓存)来测试这一点-例如,
不要像这样生成js代码。您应该将这些文件名放入一个数组,然后json\u encoding()?不,因为当我签出更新的文件时,所有内容都正确写入。在这种情况下,这是一个缓存问题。浏览器有不同的策略。通常情况下,如果缓存的文件太旧或者您直接请求它,那么它会被重新加载,但不是这样。我会检查一下out@scrowler注释将有助于解决缓存问题。