Uncaught ReferenceError: init не определен при загрузке - PullRequest
0 голосов
/ 24 апреля 2020

Здесь есть похожий вопрос, но он не позволил мне решить мою проблему. Я создаю веб-страницу, используя Google Maps javascript API. Я создал свой собственный сервер Restfull с маршрутом, который клиент будет использовать для получения координат / данных карты из моей базы данных mysql.

Я могу загрузить карту, но я получаю эту ошибку, когда она загружается в мой браузер после добавления в нее кода makeRequest. В настоящее время я получаю ошибку Uncaught ReferenceError: init не определен при загрузке

Я полагаю, что он ссылается на body onload = "init ();" в моем HTML.

Вот мой код, любая помощь будет принята с благодарностью, так как мои знания JS несколько ограничены. Заранее спасибо

<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>Team Locations</title>
    <style type="text/css">
        body {
            font: normal 14px Verdana;
        }

        h1 {
            font-size: 24px;
        }

        h2 {
            font-size: 18px;
        }

        #sidebar {
            float: right;
            width: 30%;
        }

        #main {
            padding-right: 15px;
        }

        .infoWindow {
            width: 220px;
        }

    </style>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDNMFE1XBzVnhPOI5IH90FrwumFfLo5x40&callback=initMap"></script>
    <script type="text/javascript">
        //<![CDATA[

        var map;

        // Centre of York
        var center = new google.maps.LatLng(53.957741, -1.082260);

        var geocoder = new google.maps.Geocoder();
        var infowindow = new google.maps.InfoWindow();

        function init() {

            var mapOptions = {
                zoom: 13,
                center: center,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }

            map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);


            makeRequest('http://localhost:5032/', function(data) {

                    var data = JSON.parse(data.responseText);

                    for (var i = 0; i < data.length; i++) {
                        displayLocation(data[i]);
                    });
            },

                function makeRequest(url, callback) {
                    var request;
                    if (window.XMLHttpRequest) {
                        request = new XMLHttpRequest(); // IE7+, Firefox, Chrome, Opera, Safari
                    } else {
                        request = new ActiveXObject("Microsoft.XMLHTTP"); // IE6, IE5
                    }
                    request.onreadystatechange = function() {
                        if (request.readyState == 4 && request.status == 200) {
                            callback(request);
                        }
                    }
                    request.open("GET", url, true);
                    request.send();
                }
            });




            //]]>

    </script>
</head>

<body onload="init();">

    <h1>Team Locations</h1>

    <section id="sidebar">
        <div id="directions_panel"></div>
    </section>

    <section id="main">
        <div id="map_canvas" style="width: 70%; height: 500px;"></div>
    </section>

</body>

</html>

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Простая проблема синтаксиса. Ваша функция инициализации заканчивается запятой ,, и у вас есть дополнительный }); в конце кода, так что похоже, что вы скопировали некоторый код из шаблона объекта, но пропустили либо открытие ({, либо вам нужно удалить это закрытие }) и запятая после функции init().

0 голосов
/ 24 апреля 2020

Вы вызываете init() при рендеринге, а не при загрузке.

Попробуйте передать ссылку на функцию.

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