Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从url检索Json成功,但表中未显示任何数据_Javascript_Json - Fatal编程技术网

Javascript 从url检索Json成功,但表中未显示任何数据

Javascript 从url检索Json成功,但表中未显示任何数据,javascript,json,Javascript,Json,我尝试运行代码,并成功地从url检索json,因为返回了警报成功。但是,当我尝试检索数据时,json文件没有结果。有人能帮我吗 $.ajax({ 键入:“获取”, 网址:'https://maps.googleapis.com/maps/api/directions/json?origin=Disneyland&destination=Universal+工作室+好莱坞&key=YOUR-API-key', 数据类型:“json”, 成功:功能(数据){ 图纸(数据); 警惕(“成功!”);

我尝试运行代码,并成功地从url检索json,因为返回了警报成功。但是,当我尝试检索数据时,json文件没有结果。有人能帮我吗

$.ajax({
键入:“获取”,
网址:'https://maps.googleapis.com/maps/api/directions/json?origin=Disneyland&destination=Universal+工作室+好莱坞&key=YOUR-API-key',
数据类型:“json”,
成功:功能(数据){
图纸(数据);
警惕(“成功!”);
}
});
函数绘图表(数据){
对于(变量i=0;i
表格{
边框:2个实心#666;
宽度:100%;
}
th{
背景:#f8f8;
字体大小:粗体;
填充:2px;
}

Json到HTML
拉特
液化天然气

正如其他用户所评论的,您应该首先检查从api获得的数据是否正确。表示您已到达该点的警报并不保证您拥有所需的数据。另一方面,如果你有正确的数据,请考虑这个解决方案

根据您试图在表中绘制的数据结构,我认为可能是这样的:

[
    {
        "lat": 123,
        "lng": 456,
    }, {
        "lat": 789,
        "lng": -456,
    }, {
        "lat": 321,
        "lng": 956,
    }
]
data = [{lat: latValue0, lng :lngValue0}, {lat: latValue1, lng : lngValue1}, ...]
function drawTable(data) {
  let table = $("#personDataTable");

  data.forEach(row => {
    table.append(`<tr><td>${row.lat}</td><td>${row.lng}</td></tr>`)
  });
}
当然会有更多的数据,但我想这些是与你的情况相关的数据。如果是这种情况,一种方法如下:

const数据集=[
{
拉丁美洲:123,
液化天然气:456,
}, {
拉脱维亚:789,
液化天然气:-456,
}, {
拉丁美洲:321,
液化天然气:956,
}
];
函数drawTable(数据集){
const rows=dataset.map(drawRow.join)(“”);
document.querySelector('#root')。innerHTML=`
纬度
经度
${rows}
`;
}
函数drawRow(数据){
返回`
${data.lat}
${data.lng}
`;
}
//在您的示例中,对函数的调用将在ajax方法中的回调成功中进行
绘图表(数据集)
表格{
边框:2个实心#666;
宽度:100%;
}
th{
背景:#f8f8;
字体大小:粗体;
填充:2px;
}

正如其他用户所评论的,您应该首先检查从api获得的数据是否正确。表示您已到达该点的警报并不保证您拥有所需的数据。另一方面,如果你有正确的数据,请考虑这个解决方案

根据您试图在表中绘制的数据结构,我认为可能是这样的:

[
    {
        "lat": 123,
        "lng": 456,
    }, {
        "lat": 789,
        "lng": -456,
    }, {
        "lat": 321,
        "lng": 956,
    }
]
data = [{lat: latValue0, lng :lngValue0}, {lat: latValue1, lng : lngValue1}, ...]
function drawTable(data) {
  let table = $("#personDataTable");

  data.forEach(row => {
    table.append(`<tr><td>${row.lat}</td><td>${row.lng}</td></tr>`)
  });
}
当然会有更多的数据,但我想这些是与你的情况相关的数据。如果是这种情况,一种方法如下:

const数据集=[
{
拉丁美洲:123,
液化天然气:456,
}, {
拉脱维亚:789,
液化天然气:-456,
}, {
拉丁美洲:321,
液化天然气:956,
}
];
函数drawTable(数据集){
const rows=dataset.map(drawRow.join)(“”);
document.querySelector('#root')。innerHTML=`
纬度
经度
${rows}
`;
}
函数drawRow(数据){
返回`
${data.lat}
${data.lng}
`;
}
//在您的示例中,对函数的调用将在ajax方法中的回调成功中进行
绘图表(数据集)
表格{
边框:2个实心#666;
宽度:100%;
}
th{
背景:#f8f8;
字体大小:粗体;
填充:2px;
}

问题在于对jQuery的理解和使用不当。首先,您的ajax是错误的。我的意思是,您在链接的末尾有“YOUR-API-KEY”,所以我不知道您是如何以及为什么说数据被成功检索的?但是,假设是这样的,假设您解析JSON和/或操纵数据的方式是这样的:

[
    {
        "lat": 123,
        "lng": 456,
    }, {
        "lat": 789,
        "lng": -456,
    }, {
        "lat": 321,
        "lng": 956,
    }
]
data = [{lat: latValue0, lng :lngValue0}, {lat: latValue1, lng : lngValue1}, ...]
function drawTable(data) {
  let table = $("#personDataTable");

  data.forEach(row => {
    table.append(`<tr><td>${row.lat}</td><td>${row.lng}</td></tr>`)
  });
}
我的意思是,这是我在你的代码中看到的:
data[I].lat
data[I].lng

因此,有了如此巨大的工作量,我们可以像这样完成绘制表格行的实际过程:

[
    {
        "lat": 123,
        "lng": 456,
    }, {
        "lat": 789,
        "lng": -456,
    }, {
        "lat": 321,
        "lng": 956,
    }
]
data = [{lat: latValue0, lng :lngValue0}, {lat: latValue1, lng : lngValue1}, ...]
function drawTable(data) {
  let table = $("#personDataTable");

  data.forEach(row => {
    table.append(`<tr><td>${row.lat}</td><td>${row.lng}</td></tr>`)
  });
}
函数绘图表(数据){
let table=$(“#personDataTable”);
data.forEach(行=>{
table.append(`${row.lat}${row.lng}`)
});
}
就这样。你不需要更多。如果您不熟悉ES6语法,可以转到左侧粘贴ES6代码,并在右侧查看其编译结果。顺便说一句,对于
循环,
forEach()
优于“经典”
。它们在做同样的工作,但是语法更少,出错的空间也更少

顺便说一句,jQuery的
.append()
错误在于将追加字符串与追加页面上的另一个元素相混淆,而您是使用
$
选择该元素的。阅读更多关于它的信息

进一步阅读:


    • 问题在于对jQuery的理解和使用不当。首先,您的ajax是错误的。我的意思是,您在链接的末尾有“YOUR-API-KEY”,所以我不知道您是如何以及为什么说数据被成功检索的?但是,假设是这样的,假设您解析JSON和/或操纵数据的方式是这样的:

      [
          {
              "lat": 123,
              "lng": 456,
          }, {
              "lat": 789,
              "lng": -456,
          }, {
              "lat": 321,
              "lng": 956,
          }
      ]
      
      data = [{lat: latValue0, lng :lngValue0}, {lat: latValue1, lng : lngValue1}, ...]
      
      function drawTable(data) {
        let table = $("#personDataTable");
      
        data.forEach(row => {
          table.append(`<tr><td>${row.lat}</td><td>${row.lng}</td></tr>`)
        });
      }
      
      我的意思是,这是我在你的代码中看到的:
      data[I].lat
      data[I].lng

      因此,有了如此巨大的工作量,我们可以像这样完成绘制表格行的实际过程:

      [
          {
              "lat": 123,
              "lng": 456,
          }, {
              "lat": 789,
              "lng": -456,
          }, {
              "lat": 321,
              "lng": 956,
          }
      ]
      
      data = [{lat: latValue0, lng :lngValue0}, {lat: latValue1, lng : lngValue1}, ...]
      
      function drawTable(data) {
        let table = $("#personDataTable");
      
        data.forEach(row => {
          table.append(`<tr><td>${row.lat}</td><td>${row.lng}</td></tr>`)
        });
      }
      
      函数绘图表(数据){
      let table=$(“#personDataTable”);
      data.forEach(行=>{
      T