2015-04-01 142 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