php脚本输出js代码不执行的解决办法和原理。
2013-09-16 01:35
615 查看
<?php
echo "<script>alert('我弹出来了')</script>";
?>
很简单你一句话就可以在PHP里面输出JS脚本让浏览器执行。
今天碰到一个很诡异的问题,就是这段代码在Chrom和firefox下至少单纯的输出字符串,没有执行,没有弹出alert。
原理:
MIME chrome对text/plain 不做解析的。php利用header可以输出html ,浏览器用最后一次输出header作为content-type
在做图片输出,我用到了一个网上的类ThumbHandler.php,这个类的_output方法里有个输出header改变了content-type;
结果导致alert不弹出,
![](http://images.cnitblog.com/blog/380611/201309/16013342-fc6c6609be454439bd915ea08c9b0579.png)
text/plain html是不执行的。
只需要在alert前重新header即可。
echo "<script>alert('我弹出来了')</script>";
?>
很简单你一句话就可以在PHP里面输出JS脚本让浏览器执行。
今天碰到一个很诡异的问题,就是这段代码在Chrom和firefox下至少单纯的输出字符串,没有执行,没有弹出alert。
原理:
MIME chrome对text/plain 不做解析的。php利用header可以输出html ,浏览器用最后一次输出header作为content-type
header('Content-Type:text/html;charset=utf-8');
在做图片输出,我用到了一个网上的类ThumbHandler.php,这个类的_output方法里有个输出header改变了content-type;
结果导致alert不弹出,
![](http://images.cnitblog.com/blog/380611/201309/16013342-fc6c6609be454439bd915ea08c9b0579.png)
text/plain html是不执行的。
只需要在alert前重新header即可。
if(!uploadFile()) { echo "<script>alert('上传文件失败')</script>"; } header('Content-Type:text/html;charset=utf-8'); echo ("<script type='text/javascript'>alert('保存成功');history.back();</script>"); //上传图片 function uploadFile() {
相关文章推荐
- Ajax中主页加载分页面后,分页面js脚本不执行的解决办法
- PHP脚本执行超时的解决办法
- PHP程序加速探索[2]--脚本执行速度测试.代码优化.压缩输出gzip
- crontab中PHP inlucde相对路径导致脚本不执行的解决办法
- Nginx + php-fpm 执行 PHP 脚本超时 报错 502 Bad Gateway + 504 Gateway Time-out 的解决办法
- 火狐浏览器下JS代码不兼容setTimeout函数失效无效不运行执行的解决办法
- Ajax中主页加载分页面后,分页面js脚本不执行的解决办法
- PHP程序加速探索[2]--脚本执行速度测试.代码优化.压缩输出gzip
- VC2005:无法执行添加/移除操作,因为代码元素是只读的....多个解决办法
- js脚本中有中文字时,可能导致脚本错误的解决办法.
- c#调用webbrowser,屏蔽js弹窗代码,同时发布exe后仍旧出现弹窗解决办法
- 火狐不执行js的一些解决办法及火狐对js的兼容问题
- Ajax中使用Response.Write输出javascript脚本出错的解决办法
- toad edit界面 执行大量脚本(2w+)挂死解决办法
- aspx.cs 中写JS弹出脚本,导致破坏页面结构,页面变形(解决办法)
- 解决submit提交的时候,先执行本地js代码的问题
- Eclipse执行java代码,获取系统时间少了8个小时,解决办法
- JS定时检测任务任务完成后执行下一步的解决办法
- cocos xxx.app模拟器引入位置->cocos code ide代码调试总是跑到执行xxx.app中的解决办法
- jsonp跨域问题【主要解决的是返回状态码是200,但是js脚本仍然是执行error模块问题】