вызов функции javascript из функции php code не определен - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть следующий сегмент кода, который вызывает функцию JavaScript ShowKML из кода PHP. Тем не менее, это дало мне следующую ошибку: Uncaught ReferenceError: showKML не определено .

<?php
    $upload = $_SERVER['PHP_SELF'];
    if(isset($_POST['kmltest'])) {
        $target_path = "uploads/";
        $fn =  basename( $_FILES['uploadedfile']['name']);

        $target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
        //echo $target_path ;
        if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
            echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
            echo "<script type=\"text/javascript\"> showKML(); </script>";  
        }else
            echo "There was an error uploading the file, please try again!";

    }
?>
<script  type="text/javascript">
    function initialize() {
        if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map"));
            map.setCenter(new GLatLng(25.22903, 55.46612), 13);
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
            map.clearOverlays();
            document.getElementById("lat").value = "25.22903";
            document.getElementById("lng").value = "55.46612";
        }
    }

    function showKML() {
    //alert(filename);
        initialize();
        document.getElementById('lat').disabled = true;
        document.getElementById('lng').disabled = true;
        var exml;
        exml = new EGeoXml("exml", map, ("uploads/test.kml"));
        exml.parse();
        exml.show(); 
    }

    function startShape() {
        ...
    }

    function startDrawing(poly, name, onUpdate) {
           ... 
    }

    function showcoor (poly) {
        ...
    }

    function drawpoint() {
        ...
    }

    </script>

ваша помощь очень ценится

1 Ответ

2 голосов
/ 13 февраля 2012

Javascript выполняется / интерпретируется в том порядке, в котором он находится в вашем файле. Когда ваш код PHP выводит кодовый блок <script>showKML()</script>, фактическое определение function showKML(..) {...} еще не было найдено, поэтому вы получаете эту ошибку.

Переместите определение функции для вывода ДО запуска вашего PHP-материала.

...