Php 无法调用getJSON方法来获取数据

Php 无法调用getJSON方法来获取数据,php,jquery,getjson,Php,Jquery,Getjson,我正在尝试获取一些JSON数据。我可以在常规的web浏览器中很好地访问数据,比如:,但我无法让它在jQuery中工作。我做错了什么 请看一下我的JSFIDLE: 无法获取结果,因为远程站点未启用: 如果您查看控制台,您将看到: 已阻止跨源请求:同一源策略不允许读取 位于的远程资源 . (原因:缺少CORS标头“访问控制允许原点”) 您可以使用以下方法绕过CORS: 如果您在不使用https的情况下运行服务器,则此操作有效。注意:fetchApi被用来代替jquery库,因为它在浏览器中不可用

我正在尝试获取一些JSON数据。我可以在常规的web浏览器中很好地访问数据,比如:,但我无法让它在jQuery中工作。我做错了什么

请看一下我的JSFIDLE:


无法获取结果,因为远程站点未启用: 如果您查看控制台,您将看到:

已阻止跨源请求:同一源策略不允许读取 位于的远程资源 . (原因:缺少CORS标头“访问控制允许原点”)


您可以使用以下方法绕过CORS:


如果您在不使用https的情况下运行服务器,则此操作有效。注意:fetchApi被用来代替jquery库,因为它在浏览器中不可用

var tsp_api = 'https://www.ebrent.net/apis/tsp.php?start=2003-01-01&end=2004-01-01';


function fetchData(url) {
      return fetch(url, {
          method: 'get'
      }).then(function(response) {
          return response.json();
      }).catch(function(err) {
          console.log(error);
      });
  }
 fetchData(tsp_api).then((data)=> console.log(data)).catch((err)=> console.log(err));

这在使用HTTPS的JSFIDLE上不起作用,浏览器将拒绝通过HTTP加载任何资源。正如您所尝试的,将API URL更改为使用HTTPS而不是HTTP通常可以解决此问题。但是,您的ebrent.net不允许CoRS进行HTTPS连接。因此,您将无法获得JSFIDLE的结果

是否启用了www.ebrent.net CORS?您在控制台中看到的错误在哪里?我打开Firebug,走向控制台,但我看到的只是一个红色的X;我没有看到任何提到跨源请求被阻止的情况。您在JSFIDLE上的示例显示了2个错误,第一个是混合内容(使用https的http请求),第二个是我在上面发布的。我想用
//www.ebrent.net
代替
http://www.ebrent.net
https://www.ebrent.net
本应负责处理混合内容错误。
$.getJSON('http://anyorigin.com/get/?url=http%3A//www.ebrent.net/apis/tsp.php%3Fstart%3D2003-01-01%26end%3D2004-01-01&callback=?', function(data){
    $('#div-data').html(data.contents);
});
var tsp_api = 'https://www.ebrent.net/apis/tsp.php?start=2003-01-01&end=2004-01-01';


function fetchData(url) {
      return fetch(url, {
          method: 'get'
      }).then(function(response) {
          return response.json();
      }).catch(function(err) {
          console.log(error);
      });
  }
 fetchData(tsp_api).then((data)=> console.log(data)).catch((err)=> console.log(err));