【问题标题】:JSP unable to execute javascript function included in script tagJSP 无法执行包含在脚本标签中的 javascript 函数
【发布时间】:2014-04-20 00:27:23
【问题描述】:

我正在编写一个 java web 应用程序,其中我在 jsp 文件中有以下 head 标签。

<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta charset="utf-8">   
<title>EECE 417 Exercise 3</title>    
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
<script type="text/javascript" src="/javascripts/main.js"></script>        
<script type="text/javascript"
  src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAxfoydM9lSVCJi-vhMZJ_Q3eawPjIsuLw&sensor=true">
</script>    
<script type="text/javascript"> 

    function initialize() {

        var myLatlng = new google.maps.LatLng(37.33152141760375,-122.04732071026367);   

        var mapOptions = {
          center: myLatlng,
          zoom: 12
        };

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

        var mrkID = "0";
        var gstBkNm = "Guestbook_" + mrkID; //guestbookNameString; //"default";
        var msgbox = "msgbox_" + mrkID; 
        var msglist = "msglist_" + mrkID;


        var contentString  = '#' + mrkID + '<div id="content">' +   
          '<div class="msglist" id="'+ msglist +'"></div>' + '</div>' +
          '<textarea id="'+ msgbox +'" rows="2" cols="20"></textarea>' +              
          '<input type="button" value="Post" onclick="postAjaxRequest('+ 
            "'" + msgbox + "', '" + mrkID + "', '" + gstBkNm + "', '" + msglist + "'" +')"/>';  

        var infowindow = new google.maps.InfoWindow({
          content: contentString

        }); 

        var iconBase = 'https://maps.google.com/mapfiles/kml/shapes/';
        var icons = {
            parking: {
                icon: iconBase + 'parking_lot_maps.png'
            },
            library: {
                icon: iconBase + 'library_maps.png'
            },
            info: {
                icon: iconBase + 'info-i_maps.png'
            }
        };

        var marker = new google.maps.Marker({       
          position: myLatlng,
          map: map,
          icon: icons['parking'].icon,  
          animation: google.maps.Animation.DROP,
          title: 'Custom Marker!'
        });    

        google.maps.event.addListener(marker, 'click', function() {
          map.setZoom(13);
          guestbookNameString = gstBkNm;
          selectedMarkerID = mrkID;     
          infowindow.open(map, marker);
          getAjaxRequest();   
        });        

        // Load the selected markers            
        alert("initialize");
        loadMarkers();
        alert("initialize1");
    }      

    google.maps.event.addDomListener(window, 'load', initialize);
</script>

我在脚本中调用 loadMarkers() 函数的代码中有两个警报。此 loadMarkers() 存在于包含的 src 文件中(在 main.js 中的 jsp 头标记中。

由于某种原因,它无法执行 loadMarkers() 中的代码。我在 main.js 中有 loadmarkers() 如下:

function loadMarkers() { 
    alert("loadMarkers"); 
    try { 
        xmlHttpReq = new XMLHttpRequest(); 
        xmlHttpReq.onreadystatechange = httpCallBackFunction_loadMarkers; 
        var url = "/resources/markers.xml"; 

        xmlHttpReq.open('GET', url, true); 
        xmlHttpReq.send(null);           
    } catch (e) { 
        alert("Error: " + e); 
    }    
} 

应用程序似乎运行良好,我之前没有遇到过这个问题。还值得注意的是 getAjaxRequest() 也在 main.js 文件中,并且似乎不起作用,因为我在该函数的开头设置了一个警报,但它没有显示在我的浏览器中。如果我能对如何解决这个问题有所了解,那将是非常有益的。谢谢。

【问题讨论】:

  • 控制台没有js报错吗?
  • @roshiro 不,据我所知,javascript 中没有错误。我还应该在浏览器中看到警报(“loadMarkers”),但在我运行应用程序时它不会显示。

标签: java javascript jsp


【解决方案1】:

我设法让所有警报都能正常工作here

我必须在正文中包含一个 ID 为“map-canvas”的 div,并将 loadMarkers() 从 main.js 文件中移出。

【讨论】:

  • 感谢您的努力!似乎问题出在我的 javascript 中的时间关键函数中进行的计算,导致标记不显示。欣赏尝试! :)
【解决方案2】:

问题似乎是由于我的 javascript 中的 Ajax 请求函数中的计算引起的。这看起来很奇怪,但是在将计算从函数中移出之后,标记似乎可以正确加载。警报没有显示在浏览器中仍然很奇怪。

【讨论】:

    猜你喜欢
    • 2012-02-24
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2016-09-22
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    相关资源
    最近更新 更多