我正在尝试使用以下代码从localhost:8080获取数据
的index.html
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html,body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<!--<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCKqvfwhEajjWqM0t8jE2Mg7eacHcbzySc&callback=initMap"></script>-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
function readfile(){
$.ajax({
url:"http://localhost:8080/locations",
dataType: 'jsonp',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
type:'GET',
success: function(result){
window.alert("HI");
console.log(result);
},
error: function(jqXHR, textStatus, errorThrown){
window.alert(jqXHR.status);
},
timeout:48000,
});
}
</script>
</head>
<body onload= "readfile()"></body>
</html>
由于这是一个CORS请求,我在Google Chrome中安装了一个允许控制访问插件。 localhost:8080 / locations中显示的数据如下
[{"latitude":"13.0000","longitude":"27.0000"},`{"latitude":"16.000","longitude":"50.000"},{"latitude":"13.0000","longitude":"27.0000"},{"latitude":"16.0000","longitude":"29.0000"}]
REST API是使用Springboot编写的,它正在发出GET请求,从而在localhost:8080 / locations上产生上述数据。打开index.html时会触发错误句柄,但状态为200并且不显示任何内容。
我的AJAX代码是否有问题,如何解决它并获取网页上localhost中显示的JSON并处理它。
修改
数据类型:json而不是jsonp。还有许多其他Stackoverflow文章说,在制作CORS请求时,需要使用jsonp而不是json。请参阅cross domain jquery get。有人可以解释究竟发生了什么吗?