为什么来自w3schools的这个JQuery.get示例对我不起作用?

时间:2014-09-06 04:57:12

标签: javascript jquery html get

对于其他人来说这是显而易见的,但对于我的生活,我无法理解。

我已经从http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_get

复制了HTML

我稍微更改了一行,以便.get url指向完整的w3schools.com网址(这在他们的示例页面上工作得很好)。这是代码:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $.get("http://www.w3schools.com/jquery/demo_test.asp",function(data,status){
      alert("Data: " + data + "\nStatus: " + status);
    });
  });
});
</script>
</head>
<body>

<button>Send an HTTP GET request to a page and get the result back</button>

</body>
</html>

这个代码在w3schools网站上对我来说很合适,但当我将它粘贴到家用电脑上名为“hi.html”的新文件中并在Chrome和Firefox中打开时,它就会失败。

我正在直接复制和粘贴这个html,为什么会失败?

1 个答案:

答案 0 :(得分:3)

由于同源策略(https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy),您的Web浏览器会阻止执行Ajax请求。基本上,当您在localhost:80上运行脚本时,您只能对localhost:80上的页面发出Ajax请求。 W3Schools在不同的主持人。

出于安全原因,存在同源政策。例如,假设您已登录Facebook。如果不存在同源策略,程序员可以创建一个恶意网站,为Facebook.com发出Ajax请求,并返回您的登录cookie。然后,它可以将您的登录cookie发送给恶意程序员。然后,恶意程序员可以使用您的登录cookie并在Facebook上冒充您。