javascript / jquery getJSON无效

时间:2015-02-01 21:33:28

标签: javascript php jquery html

所以我创建了一个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>

3 个答案:

答案 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/

工作