为什么这个代码不工作?
任何人都可以告诉我为什么这段代码不起作用吗?为什么这个代码不工作?
<?php $err=1; ?>
<img src="334234234234234.gif" onError="<?php $err=0; ?>" />
<?php echo "<br />" . $err; ?>
即使图像存在,仍然执行onerror。为什么?
HTML无法设置PHP变量。这些只能在服务器上设置。 IMG标记的onError方法无法访问PHP变量。
页面生命周期:
- (服务器)服务器建立你的网页(处理变量等)
- (服务器 - >客户端)的服务器发送的页面到客户端计算机
- (CLIENT)html被加载,javascript运行,并且引发任何错误。
请注意,您试图将项目3与项目1组合在一起,这不能在语义上完成。
做尝试的唯一方法就是将JavaScript方法附加到该事件,并在onError方法运行时与服务器通信。但是这可能会比你想象的更复杂一些。
由于php是服务器端代码,无论是否发生onError,<?php $err=0; ?>
都会执行。您需要使用其他方法或Javascript(或其他客户端代码)来执行此操作。
如果你只是想打印出一个变量到屏幕上,如果图像没有加载,你可以使用onError="alert('ERROR: Image did not load');"
来创建一个弹出框(或者你可以使用javascript来修改页面上的html) ,但如果您想与服务器通话,则必须使用JavaScript提交表单或使用AJAX方法。
您的代码将总是产生这样的输出:
<img src="334234234234234.gif" onError="" />
<br />0
的onError
JavaScript处理是空的,因为它里面的PHP代码不产生输出。
是您发布实际代码或简化代码的代码?目前尚不清楚你想要完成什么。
如果你正在检查的文件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事件。
你们为什么不投这个票?我记得我在开始使用PHP时犯的错误 - 这是一个诚实的错误。不要阻止新来者。 – Sampson 2009-06-22 17:21:30
我知道我真的只是新的PHP。诚实的错误是什么意思?请你澄清一下。 – tinkerBOY 2009-06-23 15:54:52