所以我创建了一个index.php文件,其代码与w3schools example完全相同,并且它不起作用,但是当我在tryit中使用w3schools示例时它可以工作!请帮忙。
以下是代码:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("http://www.w3schools.com/jquery/demo_ajax_json.js", function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
});
});
</script>
</head>
<body>
<button>Get JSON data</button>
<div></div>
</body>
</html>
答案 0 :(得分:1)
Same-origin policy不允许您向外部资源发送Ajax请求:
在计算中,同源策略是Web应用程序安全模型中的一个重要概念。该策略允许在源自同一站点的页面上运行的脚本(方案,主机名和端口号的组合)在没有特定限制的情况下访问彼此的DOM,但阻止访问不同站点上的DOM。除非服务器提供Access-Control-Allow-Origin(CORS)标头,否则同源策略也适用于
XMLHttpRequests
。值得注意的是,WebSockets
不受同源政策的约束。
答案 1 :(得分:0)
我认为@Vhuhuman是对的,但如果你使用的是php,你可以使用php curl函数进行解决。您可以创建一个如下所示的本地php文件,并在js中将其作为json源调用。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.w3schools.com/jquery/demo_ajax_json.js");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
答案 2 :(得分:0)
您还可以使用jsonp跨域http://learn.jquery.com/ajax/working-with-jsonp/
工作