2016-09-14 87 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 發出跨域請求。