有谁可以告诉我为什么这段代码不起作用?
<?php $err=1; ?>
<img src="334234234234234.gif" onError="<?php $err=0; ?>" />
<?php echo "<br />" . $err; ?>
即使图像存在,仍然会执行错误。为什么呢?
答案 0 :(得分:11)
HTML无法设置PHP变量。这些只能在服务器上设置。 IMG标记的onError方法无法访问PHP变量。
页面生命周期:
注意,您正在尝试将第3项与第1项合并,而这在项目上无法完成。
执行您尝试的操作的唯一方法是将javascript方法附加到该事件,并在运行onError方法时与服务器通信。但这可能比你习惯的要复杂得多。
答案 1 :(得分:4)
由于php是服务器端代码,无论onError是否实际发生,<?php $err=0; ?>
都会被执行。您将需要使用其他方法或Javascript(或其他客户端代码)来执行此操作。
如果您想要做的就是在图片未加载的情况下将变量打印到屏幕上,您可以使用onError="alert('ERROR: Image did not load');"
创建一个弹出框(或者您可以使用javascript来修改html页面),但是如果你想与服务器通信,你必须使用javascript提交表单或使用AJAX方法。
答案 2 :(得分:3)
您的代码将始终生成此输出:
<img src="334234234234234.gif" onError="" />
<br />0
onError
JavaScript处理程序为空,因为其中的php代码不会产生任何输出。
您发布的代码是实际代码还是简化代码?目前尚不清楚你想要完成什么。
答案 3 :(得分:2)
如果要检查文件的存在,PHP提供了一个很好的功能
来自页面的修改示例。
<?php
$filename = '/path/to/334234234234234.gif';
if (file_exists($filename)) {
echo "<img src='334234234234234.gif'/>";
} else {
echo "The file $filename does not exist";
}
?>
回答你的问题。
即使图像存在,也是如此 onerror仍然执行。为什么呢?
永远不会执行onError。它似乎执行,因为您在脚本的末尾显式输出$ err变量。如果您使用上面的代码,您可以在不依赖JavaScript事件的情况下实现我认为的预期结果。