javascript - 为什么单独点击静态页面,不执行AJAX程序?

查看:145
本文介绍了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没有执行?
请问这是为什么呢

解决方案

  1. 首先你发 Ajax 请求的 url 是相对地址. 直接打开 html 的时候,请求是发送不到你服务端的.
    所以, 得把 url 改成绝对地址.

  2. 把 url 改成绝对地址后, 直接发请求的话, 因为同源策略, 还是无法正常接收响应.
    得在服务端的响应头加上字段. * 表示允许来自所有域的请求.

Access-Control-Allow-Origin: "*"

看下 MDN 这篇文章: https://developer.mozilla.org...

这篇关于javascript - 为什么单独点击静态页面,不执行AJAX程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆