Читать JSON и в HTML-таблицу - PullRequest
0 голосов
/ 07 ноября 2018

В следующем коде я пытаюсь показать строки источника в таблице HTML. Проблема в том, что вместо строки я вижу «неопределенный». Заранее спасибо!

    <!DOCTYPE html>
<html>
<body>

<h2>Table:</h2>

<p id="demo"></p>

<script>
var obj, dbParam, xmlhttp, myObj, x, txt = "";
obj = { table: "customers", limit: 20 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myObj = JSON.parse(this.responseText);
        txt += "<table border='1'>"
        for (x in myObj) {
            txt += "<tr><td>" + myObj[x].name + "</td></tr>";
        }
        txt += "</table>"        
        document.getElementById("demo").innerHTML = txt;
    }
};
xmlhttp.open("POST", "https://www.bayern-fahrplan.de/DDIP01?CoordSystem=WGS84&MinX=11%2C012742519378662&MinY=49%2C465725517007506&MaxX=11%2C035208702087402&MaxY=49%2C47637864525285&ts=154159795103", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);

</script>

</body>
</html>

1 Ответ

0 голосов
/ 07 ноября 2018

Я протестировал ваш код и посмотрел на JSON, который возвращается в ответе. Пример возвращаемого объекта:

    {"CurrentStop":"KURGAR:1",
    "DayOfOperation":"07.11.2018",
    "Delay":227,
    "DirectionText":"Stadtgrenze",
    "ID":"35094510",
    "JourneyIdentifier":"2009441",
    "Latitude":"49,466061",
    "LatitudeBefore":"49,467044",
    "LineText":"38",
    "Longitude":"11,012931",
    "LongitudeBefore":"11,013168",
    "MOTCode":5,
    "ModCode":5,
    "NextStop":"STAD:6",
    "Operator":"VAG",
    "ProductIdentifier":"BUS",
    "RealtimeAvailable":1,
    "Timestamp":"2018-11-07T15:13:44+01:00",
    "TimestampPrevious":"2018-11-07T15:12:40+01:00",
    "VehicleIdentifier":"589",
    "X":"11,012931",
    "XPrevious":"11,013168",
    "Y":"49,466061",
    "YPrevious":"49,467044"}

В цикле for в вашем коде вы пытаетесь получить свойство name myObj[x] следующим образом:

for (x in myObj) {
    txt += "<tr><td>" + myObj[x].name + "</td></tr>";
}

Однако, как вы можете видеть в JSON выше, свойства name нет, поэтому вы получаете undefined.

Если вы замените name в приведенном выше коде «for loop» на правильное имя свойства, тогда ваш код будет работать. Например, следующее:

for (x in myObj) {
    txt += "<tr><td>" + myObj[x].CurrentStop + "</td></tr>";
}

Я проверил это, и оно работает. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...