2016-09-14 90 views
0
<!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> 

我不知道为什么代码没有被执行这是我第一次尝试做这件事并且不知道该怎么做。试图解析来自url api的JSON数据

+0

Javascript控制台中的任何错误? – Barmar

+1

你可能不应该在异步回调函数中使用'document.write()'。 – Barmar

+0

请参阅http://stackoverflow.com/questions/8656509/document-write-in-jsonp-callback – Barmar

回答

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>

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请求时,它从比所述第一资源 本身用作所述一个不同的域请求 资源。例如,来自 http://domain-a.com的HTML页面发出src请求 http://domain-b.com/image.jpg。今天网络上的许多页面加载 资源,如来自单独的 域的CSS样式表,图像和脚本。

出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求 。例如,XMLHttpRequest遵循同源策略 。因此,使用XMLHttpRequest 的Web应用程序只能向其自己的域发出HTTP请求。为了改进应用程序的Web ,开发人员要求浏览器供应商允许XMLHttpRequest 发出跨域请求。