javascript - 为什么单独点击静态页面,不执行AJAX程序?
本文介绍了javascript - 为什么单独点击静态页面,不执行AJAX程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
cache.html ------- 静态页面
<html>
<script type="text/javascript">
$(function(){
$.post("server.php",{flag:1},function(ev){
if (ev.code==1) {
$('p').append(ev.msg)
}else{
$('p').append(ev.msg)
}
},'json')
})
</script>
<body>
<p></p>
</body>
</html>
static.php ---------PHP代码
<?php
$file = "cache.html";
$expr = 60;
if(file_exists($file)) {
$ctime =filectime($file);
if($ctime+$expr > time()){ //判断是否过期
echo file_get_contents($file);
}else{
unlink($file);
ob_start();
include('static.html');
$content = ob_get_contents();
file_put_contents($file,$content);
ob_end_flush();
}
}
?>
执行static.php时 调用静态页面可以执行ajax程序 为什么 我单独打开cache.html时ajax没有执行?
请问这是为什么呢
解决方案
首先你发 Ajax 请求的 url 是相对地址. 直接打开 html 的时候,请求是发送不到你服务端的.
所以, 得把 url 改成绝对地址.把 url 改成绝对地址后, 直接发请求的话, 因为同源策略, 还是无法正常接收响应.
得在服务端的响应头加上字段. * 表示允许来自所有域的请求.
Access-Control-Allow-Origin: "*"
看下 MDN 这篇文章: https://developer.mozilla.org...
这篇关于javascript - 为什么单独点击静态页面,不执行AJAX程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文