AJAX请求无法从localhost:8080获取数据

时间:2017-06-13 13:20:38

标签: javascript html ajax spring-boot

我正在尝试使用以下代码从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。有人可以解释究竟发生了什么吗?

0 个答案:

没有答案