javascript - 我真的很难使用 javascript 让我的 json 数据显示在表格中

标签 javascript html json html-table

我有一个源模型脚本,当我尝试复制时,它似乎无法正常工作。谁能告诉我哪里出错了?

HTML(这只是说表格应该放在哪里,JS 脚本就在最后,因此完整的 HTML 在运行脚本之前运行,所以我认为这里没有任何问题):

<!DOCTYPE html>
<html>
<head>
    <title>Weather App</title>
    <meta charset="UTF-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
    <header>
        <h1>'>Weather App</h1>
    </header>
    <section>
        <table id="weather"></table>
        <div id="info"></div>
    </section>
<footer>
</footer>
<script src="weather.js" type="text/javascript"></script>
</body>
</html>

JavaScript(我很确定问题就在这里,但我不知道为什么。我知道问题可能出现在表格格式的响应部分,但我对如何以及为什么感到困惑):

(function updateWeather()) {
    setTimeout(function() {
        $.ajax({
            url: "weather.json",
            type: "GET",
            dataType: "json",
            success: function(response) {
                let sTxt = "";
                $("#weather").html("");
                $.each(response.cities, function(index) {
                    sTxt += "<tr class='weather'><td>" + response.cities[index].cityName +
                        "</td><td>" + response.cities[index].currentConditions +
                        "</td><td>" + response.cities[index].temperature + "</td><td>" +
                        response.cities[index].windSpeed + "</td><td>" + response.cities[
                            index].windDirection + "</td><td>" + response.cities[index].windChillFactor +
                        "</td>" + "</td><td></td><td></td></tr>";;
                })
                $("#weather").append(sTxt);
                updateWeather();
            },
            error: function() {
                $("#info").html("<p>An error has occured</p>");)
        });
    }, 250);
})();

JSON(我不认为这里有什么问题):

{
    "cities": [
      {
        "cityID": "1",
        "cityName": "London",
        "currentConditions": "Warm and Windy",
        "temperature": "28",
        "windSpeed": "12",
        "windDirection": "North East",
        "windChillFactor": "0"
      },
      {
        "cityID": "2",
        "cityName": "Canterbury",
        "currentConditions": "Light Showers",
        "temperature": "26",
        "windSpeed": "4",
        "windDirection": "North",
        "windChillFactor": "0"
      },
      {
        "cityID": "3",
        "cityName": "Margate",
        "currentConditions": "Windy",
        "temperature": "27",
        "windSpeed": "5",
        "windDirection": "South East",
        "windChillFactor": "5"
      },
      {
        "cityID": "4",
        "cityName": "Whitstable",
        "currentConditions": "Rain",
        "temperature": "21",
        "windSpeed": "6",
        "windDirection": "West",
        "windChillFactor": "7"
      },
      {
        "cityID": "5",
        "cityName": "Herne Bay",
        "currentConditions": "Rain",
        "temperature": "19",
        "windSpeed": "8",
        "windDirection": "South",
        "windChillFactor": "0"
      },
      {
        "cityID": "6",
        "cityName": "Ramsgate",
        "currentConditions": "Light Showers",
        "temperature": "22",
        "windSpeed": "4",
        "windDirection": "South East",
        "windChillFactor": "-2"
      },
      {
       "cityID": "7",
        "cityName": "Dover",
        "currentConditions": "Strong Winds",
        "temperature": "36",
        "windSpeed": "12",
        "windDirection": "South West",
        "windChillFactor": "3"
      },
      {
        "cityID": "8",
        "cityName": "Folkestone",
        "currentConditions": "Cloudy",
        "temperature": "27",
        "windSpeed": "9",
        "windDirection": "North",
        "windChillFactor": "-10"
      },
      {
        "cityID": "9",
        "cityName": "Deal",
        "currentConditions": "Hot",
        "temperature": "29",
        "windSpeed": "7",
        "windDirection": "North East",
        "windChillFactor": "-5"
      },
      {
        "cityID": "10",
        "cityName": "Ashford",
        "currentConditions": "Strong Showers",
        "temperature": "17",
        "windSpeed": "5",
        "windDirection": "South East",
        "windChillFactor": "-7"
      },
    ]
  }

感谢您的任何建议。

最佳答案

我认为您可能会遇到这个问题,因为缺少一些括号和其他 JavaScript 语法错误。

由于整个 javascript 函数声明后面跟着一对 (),因此我假设 updateWeather() 函数的目的是自动运行。 See this answer for more info about ()'s .

请尝试这个更新的 JavaScript 代码。

(function updateWeather(){

    $.ajax({
            url: "weather.json",
            type: "GET",
            dataType: "json",
            success: function(response) {
                let sTxt = "";
                $("#weather").html("");
                $.each(response.cities, function(index) {
                    sTxt += "<tr class='weather'><td>" + response.cities[index].cityName +
                        "</td><td>" + response.cities[index].currentConditions +
                        "</td><td>" + response.cities[index].temperature + "</td><td>" +
                        response.cities[index].windSpeed + "</td><td>" + response.cities[
                            index].windDirection + "</td><td>" + response.cities[index].windChillFactor +
                        "</td>" + "</td><td></td><td></td></tr>";;
                })
                $("#weather").append(sTxt);
                //updateWeather();
            },
            error: function() {
                $("#info").html("<p>An error has occured</p>")
            }
        })

})();

附注如果像我一样使用本地 json 文件进行测试,您将遇到 CORS 错误“Access to XMLHttpRequest at 'file:///C:/Users/blah/blah/blah/weather.json' from origin 'null' has被 CORS 策略阻止:跨源请求仅支持以下协议(protocol)方案:http、data、chrome、chrome-extension、https” 您可能已经解决了这个问题,但您需要在服务器上获取 json 或 CORS 策略允许的内容。 See this answer

祝你好运!

关于javascript - 我真的很难使用 javascript 让我的 json 数据显示在表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59725888/

相关文章:

php - 当发生太多 $.getJSON 请求时,keyup 函数会卡住页面

javascript - 更改当前 mxGraph 的 mxGraphModel

html - 使用 HTML 和 Perl 上传文件

javascript - Processing.getInstanceById(id);使用一个函数,对另一个函数未定义?

html - 水平到垂直菜单,在浏览器窗口调整大小

javascript - AngularJS 的新手 : Trying to make a directive and using it via a comment in the HTML

json - AWS Lambda 解析 JSON(意外 token )

javascript - JSON 对象与 Javascript 对象

javascript - 如何查找列表项的索引(ul-li)?

javascript - 在提交表单之前更改输入文本值