【问题标题】:Trying to parse JSON data from url api [duplicate]尝试从 url api 解析 JSON 数据 [重复]
【发布时间】:2017-01-22 19:37:37
【问题描述】:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<script src="jquery.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>
<script>
    $(document).ready(function() {
    $.getJSON('https://api.uclassify.com/v1/uclassify/sentiment/classify/?readKey=zp3PVGoy6XnZ&text=hello', function(Results) {
document.write(Results.negative);
});
});
</script>
</head>
</html>

我不知道为什么代码没有被执行这是我第一次尝试这样做并且不知道该怎么做。

【问题讨论】:

标签: javascript html json


【解决方案1】:

看起来服务器不允许 CORS。

function sendRequest(callback) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = requestHandler;
    xmlHttp.open('GET', 'https://api.uclassify.com/v1/uclassify/sentiment/classify/?readKey=zp3PVGoy6XnZ&text=hello', true);
    xmlHttp.setRequestHeader('content-type', 'application/json');
    xmlHttp.send();

    function requestHandler() {
        if (xmlHttp.readyState === 4) {
            if (xmlHttp.status === 200) {
                var response = JSON.parse(xmlHttp.responseText);
                if (2 === response.status) {
                    if (callback) return callback(null, responseText);
                } else {
                    if (callback) return callback(new Error(response.statusText), null);
                }
            } else {
                if (callback) return callback(new Error(xmlHttp.statusText || 'HTTP STATUS ' + xmlHttp.status), null);
            }
        }
    }
}

window.onload = function() {
    sendRequest(function(err, response) {
        var output = document.querySelector('#output');
        if (err) return output.innerHTML = err;
        output.innerHTML = JSON.stringify(response);
    });
};
<link href="//cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css" rel="stylesheet"/>
<div class="container" id="output"></div>

【讨论】:

    【解决方案2】:

    尝试检查您的浏览器开发工具并检查是否有任何可疑消息。这就是我得到的。

    XMLHttpRequest cannot load https://api.uclassify.com/v1/uclassify/sentiment/classify/?readKey=zp3PVGoy6XnZ&amp;text=hello. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 405.

    详情请咨询https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

    资源在请求一个跨域 HTTP 请求时 来自与第一个资源不同的域的资源 本身服务。例如,一个 HTML 页面从 http://domain-a.com 发出 src 请求 http://domain-b.com/image.jpg。当今网络上的许多页面都加载 CSS 样式表、图像和脚本等资源来自不同的 域。

    出于安全原因,浏览器会限制跨域 HTTP 请求 从脚本中启动。例如,XMLHttpRequest 如下 同源政策。因此,使用 XMLHttpRequest 的 Web 应用程序 只能向自己的域发出 HTTP 请求。改善网络 应用程序,开发人员要求浏览器供应商允许 XMLHttpRequest 进行跨域请求。

    【讨论】:

      猜你喜欢
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多