我试图从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>