2015-04-01 144 views
0

我希望能夠從小頁面讀取信息。如何從外部URL獲取JSON數據

我有一個顯示以下信息的JSON服務的地址:

enter image description here

,我希望我可以保持顯示的數字。

我測試了這個example並正常工作,但是當我嘗試使用我的URL時,沒有任何反應。我不知道我是否能夠正確理解問題,但我希望有人能夠幫助我。

如果有任何問題,我儘量做出最好的解釋。

我現在問不便道歉。

,我用

var getJSON = function(url) { 
    return new Promise(function(resolve, reject) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('get', url, true); 
    xhr.responseType = 'json'; 
    xhr.onload = function() { 
     var status = xhr.status; 
     if (status == 200) { 
     resolve(xhr.response); 
     } else { 
     reject(status); 
     } 
    }; 
    xhr.send(); 
    }); 
}; 

getJSON('http://MYADDRESS/json.do?_ULN[1]').then(function(data) { 
    alert('Your Json result is: ' + data.result); //you can comment this, i used it to debug 

    result.innerText = data.result; //display the result in an HTML element 
}, function(status) { //error detection.... 
    alert('Something went wrong.'); 
}); 
+0

控制檯中的任何錯誤? – phts 2015-04-01 10:45:55

+0

假設您的請求因跨域限制而不起作用 – phts 2015-04-01 10:47:06

+0

感謝您的回覆。只是沒有出現。如果我用https嘗試使用錯誤消息。但是,如果我只用http嘗試,不會給我什麼。 – rpirez 2015-04-01 10:55:32

回答

1

你不能出於安全原因的代碼。有關JavaScript,請參閱same origin policy

有一些解決方法利用瀏覽器錯誤或角落情況,但不建議使用它們。

最好的方法是讓服務器端代理接收Ajax請求,並將HTTP請求發送到其他服務器。這應該通過消毒輸入和白名單發送的請求類型以及所聯繫的服務器來謹慎實施。

+0

謝謝你的回覆。基本上你想說的是,我將無法閱讀這些信息,對吧? – rpirez 2015-04-01 11:37:30

+0

是的。最佳選擇是使用[JSONP](http://json-p.org/)作爲解決方法 – Tadas 2015-04-02 10:23:39

1

由於瀏覽器的同源策略,您的問題存在。

您的問題的一個解決方案是使用方法JSON-P或CORS。這裏很好地解釋了該方法:http://json-p.org/和這裏:http://www.sitepoint.com/jsonp-examples/

+0

感謝您的回覆。你有權利,我需要學習JSON-P metlhod。請問可以給我一些實際的例子嗎? – rpirez 2015-04-02 08:00:20

+0

有一個簡單的例子:[http://codepen.io/CWSpear/pen/srulx](http://codepen.io/CWSpear/pen/srulx) – IGassmann 2015-04-02 08:38:59