我想从静态Web服务获取JSON不会发生任何事情

时间:2018-07-11 13:56:36

标签: javascript html json api web-services

我试图从Restful Web服务获取JSON文件。我写了一个代码,您可以在下面看到:

<!DOCTYPE html>
<html>
    <body>
        <h2>The XMLHttpRequest Object</h2>

        <button type="button" onclick="loadDoc()">Request data</button>

        <p id="demo"></p>

        <script>
            function loadDoc() {
                var xhttp = new XMLHttpRequest();
                xhttp.open("GET", "https://rest.soilgrids.org/query?lon=5.39&lat=51.57", false);
                xhttp.send();
                var r = JSON.parse(xhttp.responseText);
                var m = r.geometry.type;
                window.alert(m);
            }
        </script>
    </body>
</html>

对于这种情况,代码正在运行,没有任何异常。

但是,当我尝试从其他URL获取JSON文件时,它不起作用。 我尝试使用的网址之一是“天气api”,并且我修改了部分代码,如下所示:

<!DOCTYPE html>
<html>
    <body>
        <h2>The XMLHttpRequest Object</h2>

        <button type="button" onclick="loadDoc()">Request data</button>

        <p id="demo"></p>

        <script>
            function loadDoc() {
                var xhttp = new XMLHttpRequest();
                xhttp.open("GET", "https://samples.openweathermap.org/data/2.5/weather?id=2172797&appid=b6907d289e10d714a6e88b30761fae22", false);
                xhttp.send();
                var r = JSON.parse(xhttp.responseText);
                var m = r.coord.lon;
                window.alert(m);
            }
        </script>
    </body>
</html>

其他URL在我的本地主机下(我的目标实际上是从本地的静态Web服务获取JSON)。该网址是“ 10.10.10.190:8080/ngram/webapi/user”。当我通过任何浏览器请求该URL时,都会得到{"username":"yagmur","password":"yagmur"}的静态JSON文件。

再次我修改了这样的代码:

function loadDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "http://10.10.10.190:8080/ngram/webapi/user", false);
    xhttp.send();
    var r = JSON.parse(xhttp.responseText);
    var m = r.username;
    window.alert(m);
}

但是在这两种情况下,我都没有得到任何回应。我被困在那里。

编辑:当我查看开发人员工具时,看到这样的错误: enter image description here

通过我的Tomcat web.xml,我添加了以下几行:

<filter>
   <filter-name>CorsFilter</filter-name>
   <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>CorsFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

0 个答案:

没有答案