2012-02-13 3 views
0

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

<?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> 

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

ответ

2

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

Переместить определение функции, которое будет выводиться до того, как вы запустите свой материал PHP.

+1

JavaScript '

Смежные вопросы