{
"employees": [
{
"firstName": "John",
"lastName": "Doe"
},
{
"firstName": "Anna",
"lastName": "Smith"
},
{
"firstName": "Peter",
"lastName": "Jones"
}
]
}
和ajax:
<script>
(function() {
var jsonurl = "http://example.com/json.js";
$.getJSON( jsonurl , {
format: "json"
})
.done(function( data ) {
$.each( data.items, function( i, item ) {
$( "#mydiv" ).append( item.employees.firstname+" - "+item.employees.lastname+"<br>" );
if ( i === 3 ) { //number of items
return false;
}
});
});
})();
</script>
但这不起作用。 我在控制台上收到此错误:
XMLHttpRequest无法加载http://example.com/last.js?format=json。没有 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许来源“http://192.168.1.3:3000” 访问。
所以我读过我必须像这样更改网址
http://example.com/json.js?jsoncallback=?
错误gones但是控制台中的新错误:
Uncaught SyntaxError:意外的令牌: http://example.com/last.js?jsoncallback=jQuery111306243502511642873_1446327132484&format=json&_=1446327132485
答案 0 :(得分:1)
使用PHP读取json文件以允许Access-Control-Allow-Origin
<?php
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
}
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers:{$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
$myfile = fopen("json.js", "r") or die("Unable to open file!");
echo fread($myfile,filesize("json.js"));
fclose($myfile);
?>
答案 1 :(得分:-1)
将以下行添加到.htaccess
文件中:
Header set Access-Control-Allow-Origin "*"
这会将CORS添加到服务器中提供的所有文件中,允许您的跨域请求返回文件内容。