2013-05-24 5 views
0

내 웹 페이지에 Google지도를 구현하려고하는데 아직 webdev에서 새롭기 때문에 약간의 문제가 있습니다.잡히지 않는 ReferenceError : [함수]가 정의되지 않았습니다.

데이터를 데이터베이스에 저장하는 방법에 대한 Google API 자습서를 읽고 내 .js 파일에 적절한 함수를 만들었습니다.

코드는 다음과 같습니다

function createMarker(location){ 

    if(poiMode && activeMarkerIcon != null) { 
     var marker = new google.maps.Marker({ 
     position: location, 
     icon: activeMarkerIcon, 
     clickable:true, 
     draggable:true, 
     animation:null, 
     raiseOnDrag:false, 
     title: Titel, 
     map: map 
     }); 
     useFilter(); 
    activeGroup.push(marker); // Marker wird zum dazugehörigenArray hinzugefuegt 
    map.setOptions({draggableCursor:'default'}) // Mauscursor wieder in ursprünglichen Zustand versetzen 
    $('body, #poi1, #poi2, #poi3, #poi4, #poi5, #poi6, #poi7, #loeschen').removeClass('poi1A poi2A poi3A poi4A poi5A poi6A poi7A deleteA'); 
     var html = "<table>" + 
     "<tr><td>Name:</td> <td><input type='text' id='name'/> </td> </tr>" + 
     "<tr><td>Beschreibung:</td> <td><TEXTAREA id='description' rows='10' cols='50'></TEXTAREA></td> </tr>" + 
     "<tr align='right'><td></td><td><input type='button' value='Speichern' onclick='saveData()'/></td> <td><input type='button' value='Abbrechen' onclick='infowindow.close()'/></td> </tr>"; 
     infowindow = new google.maps.InfoWindow({ 
      content: html 
    }); 
    poiMode = false; 
    infowindow.open(map, marker); 
    google.maps.event.addListener(marker, 'click', function(event){ 
     clickOnMarker(marker); 
    }); 
    $('.activeButton').removeClass("activeButton"); 

    } 
} 

과하고 saveData() 함수는 동일의 .js 파일에 있으며 다음과 같습니다 : 나는에 저장 버튼을 누르면 그러나

 function saveData() { 
     var name = escape(document.getElementById("name").value); 
     var address = escape(document.getElementById("address").value); 
     var latlng = marker.getPosition(); 

     var url = base_url + "map/addMarker?name=" + name + "&address=" + address + "&description=" + "test" + "&user_id=" + "1" +"&lat=" + latlng.lat() + "&lng=" + latlng.lng() + "&date=" + "" +"&type=" + "poi"; 
     downloadUrl(url, function(data, responseCode) { 
     if (responseCode == 200 && data.length <= 1) { 
      infowindow.close(); 
      document.getElementById("message").innerHTML = "Location added."; 
     } 
     }); 
} 

을 내 "양식"콘솔 오류가 발생합니다.

Uncaught ReferenceError: saveData is not defined

내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? 왜냐하면 나는 내 자신의 잘못을 볼 수 없기 때문이다. 덕분에 사전

+0

그냥 사람들이 사냥 할 필요가 없도록하기 위해서,'saveData'는 첫 번째 함수 ('createMarker')에서 문자열 화 된 HTML의 마지막 라인에서''에 대한 인라인'onclick' 핸들러처럼 호출됩니다. . – ajp15243

+0

saveData가 global입니까, 아니면 다른 함수에서 범위가 지정되어 있습니까? 함수를 윈도우 객체의 속성으로 정의하려고 할 수 있습니다. 'function saveData() '대신에'window.saveData = function()'이 될 것입니다. – basilikum

+0

InfoWindow가 iframe 내부에서 렌더링되지 않는지 확인하십시오. – fmodos

답변

0

에 나는 정보창

infowindow.saveData = function(){ 
... 
}); 

의 함수로 saveData()을 정의하고 함께 함수를 호출하여이 문제를 해결했습니다

<input type='button' value='Save' onclick='infowindow.saveData()'/> 

감사 basilikum 및 다른 사람!

관련 문제