试图解析来自url api的JSON数据

时间:2016-09-14 21:27:08

标签: javascript html json

<!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>

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

2 个答案:

答案 0 :(得分:0)

看起来服务器不允许使用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>

答案 1 :(得分:0)

尝试检查浏览器开发人员工具并检查是否有任何可疑邮件。这就是我得到的。

XMLHttpRequest cannot load https://api.uclassify.com/v1/uclassify/sentiment/classify/?readKey=zp3PVGoy6XnZ&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   提出跨域请求。