最近作微信的开发因为前台和后台不再一个地方办公,前台也不会写php和ajax所以就造成了一种我些后台服务,她写前台调用的模式,让她的ajax直接访问我的服务端口,我提供给她数据,类似于写接口一样,于是问题出来了.前台ajax访问请求总是执行error.事例代码如下
前台测试代码index.html:
<!DOCOMENT html> <html> <head> <title>测试</title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <meta charset="UTF-8"/> </head> <body> <input type="button" onclick="test();" value="ajax"/> <script type="text/javascript"> function test(){ $.ajax({ type:'get', url:"http://localhost/php5.5/test.php", success:function(data){ alert(data); }, error:function(data){ alert("error"); } }) } </script> </body> </html>
<?php echo "hello"; ?>
前台在chrome中单击ajax按钮之后的显示(明显执行了error 注意chrome中的黄色提示):
在firefox中的提示:
愿意为项目中的错误是因为前台不擅长ajax造成的,但是自己也写了一个,放在了桌面,没有和apache解析php的目录放在一起,结果也是出现上边的错误,大家可以从firefox中看到提示,我们感觉firefox提示发现原因,因为js跨域访问的问题,我们要允许js的跨域请求,不知道这个说法是不是正确,总之我们要让数据能够正确的被ajax调用.经过修改php程序如下:
<?php echo header("Access-Control-Allow-Origin:*"); echo "hello"; ?>
很明显,已经得到了数据,我们看看他们头信息
返回值:
至此我们的数据可以通过ajax获取到了,关键代码
echo header("Access-Control-Allow-Origin:*");这样我们就可以跨域访问了,具体怎么理解跨域访问,我的理解就是,前台和后台不再一个域的访问,在这里怎么理解域,我的理解就是一个统一的目录.这里面写一点感悟,大家如果遇到类似于这种问题的话,还存在一个问题,就是我怎么能确定ajax是不是真的没有访问到数据那,这时候我们可以在php页面加入一个写入功能,每当有访问的时候写入一个日志文件,通过查看日志文件确定链接是否接受得到,这也是我作微信开发的过程中总结出来的,源程序要放到服务器,并不能像本地一样可以方便的调试信息,所以我们很有必要对一些东西写入日志文件,来判断程序是否正常.一点心得分享给大家.
chrome提示错误:CAUTION:Provisional headers are shown 解决办法,布布扣,bubuko.com
chrome提示错误:CAUTION:Provisional headers are shown 解决办法
原文:http://blog.csdn.net/wyfhist/article/details/38511319