Javascript 如何从不同域上没有标题的JSON文件中获取数据?
我正在尝试从中获取数据。它不在我的域中,我无法获取数据。chrome给出的错误如下:有人可以查看我的代码并给我一些提示吗 其次,我只是使用链接使用失眠,并且能够使用.0.Ed0320美元获得我想要的特定数据点。如何将其转换为JavaScript 我尝试过使用xmlHttpRequest 以下是JSON:Javascript 如何从不同域上没有标题的JSON文件中获取数据?,javascript,json,xml,xmlhttprequest,cross-domain,Javascript,Json,Xml,Xmlhttprequest,Cross Domain,我正在尝试从中获取数据。它不在我的域中,我无法获取数据。chrome给出的错误如下:有人可以查看我的代码并给我一些提示吗 其次,我只是使用链接使用失眠,并且能够使用.0.Ed0320美元获得我想要的特定数据点。如何将其转换为JavaScript 我尝试过使用xmlHttpRequest 以下是JSON: [ { "Ed0320": "8.010886", "TmStamp": "2019-08-07 15:15:00", "Ed0340": "21.15973",
[
{
"Ed0320": "8.010886",
"TmStamp": "2019-08-07 15:15:00",
"Ed0340": "21.15973",
"Ed0305": "0.2966875",
"Ed0313": "3.344086"
},
{
"Ed0320": "6.761719",
"TmStamp": "2019-08-07 15:10:00",
"Ed0340": "17.47292",
"Ed0305": "0.2349026",
"Ed0313": "2.789934"
}
]
以下是我的XML:
function reqListener() {
// parse the the data
var data = JSON.parse(this.responseText)
// create an array from the required data (result.Stats -> watch the capital 'S')
var mappedData = data[0];
// display data
document.getElementById('demo').innerHTML = mappedData.join()
}
function loadData(url) {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", url);
oReq.send();
}
Chrome给出了从源“null”访问XMLHttpRequest的错误,CORS策略已阻止该错误:跨源请求仅支持协议方案:http、数据、Chrome、Chrome扩展、https
另外,我想根据下面的函数更改url。有没有办法将其输入到fetch中
function changeText(){
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1;
var day = d.getDate();
if (month <= 9){
month = '0'+month;
}
if (day <= 9){
day = '0'+day;
}
var dateTotal = year + month + day;
url = "https://cors-escape.herokuapp.com/https://tepfsail50.execute-api.us-west-2.amazonaws.com/v1/report/metguv?rptdate=" + dateTotal;
console.log(url);
}
提前感谢您的帮助。这一切我都是新手。1。获取数据
我不太确定,你想实现什么,但这里有一个片段,那就是
向cors-anywhere.herokuapp.com发出请求,以代理目标URL的查询
从查询的URL返回一个承诺,因此我们可以等待它在代码的其他部分得到解析
过滤并映射结果数据-我不知道您希望从结果数组中获取哪些数据,以及您希望如何处理这些数据
//自调用函数将等待包装在
//异步函数,因此等待不是顶级的
异步函数{
//等待返回的承诺得到解决
//如果将console.log作为数据常量,则
//请确保您使用的是JSON格式的完整数据集
//从简单调用AWS URL得到
const data=等待获取URL
//筛选数组中键为Ed0320的对象
const filtered=data.filtere=>e的类型['Ed0320']!==未定义
//从数组映射所有Ed0320的值
const mapped=data.mape=>e['Ed0320']
//简单的输出,因此您可以检查值
console.logfiltered;
console.logmapped
};
//使用cors anywhere获取请求
函数fetchURL{
//正在创建要调用的URL:
//第一部分是cors anywhere,第二部分是
//要查询的真实URL
常量url=https://cors-anywhere.herokuapp.com/https://tepfsail50.execute-api.us-west-2.amazonaws.com/v1/report/metguv?rptdate=20190807'
//返回承诺,因为fetch是异步的
//函数,所以不能立即解决
返回新的PromiseSolve,拒绝=>{
//使用fetch而不是XMLHttpRequest
//fetch返回一个承诺,以便您可以使用。然后
//.抓住它
获取URL
.thenr=>{
resolver.json
}
.catcherr=>{
拒绝者
}
}
}嗨!现在已经很晚了,所以我明天只能更彻底地看一看。但是我有一个问题:你能从AWS链接中获取数据,并且只解析它有问题吗,或者你甚至不能用JavaScript获取数据?我用第二个片段编辑了我的答案,我删除了旧的注释并添加了新的注释,感谢回复。我需要得到最新的数据集,这是第一个条目,我需要把这些数据点输入到一个等式中。我将函数加载到原始问题中,非常感谢。你在我的两个问题上都帮了大忙。如果我能帮上忙,我很高兴。我将如何在Promise功能中使用多个链接?我还有一个项目,我有7个URL,我需要使用CORS来获取JSON数据,这取决于你想如何使用你的数据。如果接收这些数据的顺序不起作用,那么可以使用Promise.all。如果希望按特定顺序获取它们,那么可以在循环中使用异步等待语法。
function changeText(){
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1;
var day = d.getDate();
if (month <= 9){
month = '0'+month;
}
if (day <= 9){
day = '0'+day;
}
var dateTotal = year + month + day;
url = "https://cors-escape.herokuapp.com/https://tepfsail50.execute-api.us-west-2.amazonaws.com/v1/report/metguv?rptdate=" + dateTotal;
console.log(url);
}