Javascript 无法使更新面板正常工作

Javascript 无法使更新面板正常工作,javascript,asp.net,google-maps-api-3,updatepanel,reload,Javascript,Asp.net,Google Maps Api 3,Updatepanel,Reload,我正在一个使用谷歌地图apiv3的网站上工作。我在更新面板中有一个按钮,通过该按钮,我可以使用按钮点击背后的代码和javascript函数执行一些逻辑 由于按钮在更新面板中,我在firebug的监视窗口中看不到任何东西,javascript函数中的断点也不起作用。在没有更新面板的情况下,我可以在watch中看到执行流程,一切正常,但我在map上得到了重新加载 aspx中的代码: <asp:ScriptManager ID="ScriptManager1" runat="server

我正在一个使用谷歌地图apiv3的网站上工作。我在更新面板中有一个按钮,通过该按钮,我可以使用按钮点击背后的代码和javascript函数执行一些逻辑

由于按钮在更新面板中,我在firebug的监视窗口中看不到任何东西,javascript函数中的断点也不起作用。在没有更新面板的情况下,我可以在watch中看到执行流程,一切正常,但我在map上得到了重新加载

aspx中的代码:

    <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Button ID="Button1" runat="server" style="z-index: 1; left: 573px; top: 146px; position: absolute" Text="Show route" onclick="Button1_Click1"/>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click"/>
        </Triggers>
    </asp:UpdatePanel>
Javascript:

function droute()
{
    var route=[];
    var temp;
    temp = document.getElementById('<%= hdncroute.ClientID %>').value;
    route= temp.split('&');
    //Loop to add locations and draw line
    var path= polyline.getPath();
    for(var i=0;i<route.length;i++)
        {
            var input= route[i];
            var ltln = input.split(",",2);
            var lat=parseFloat(ltln[0]);
            var lng=parseFloat(ltln[1]);
            var pos= new google.maps.LatLng(lat,lng);
            var marker= new google.maps.Marker({position:pos,map:map});
            path.push(route[i]);
            google.maps.event.addListener(marker,'click',showiwindow);
        }
    function showiwindow(event)
    {
    iwindow.setContent("<b>Coordinates are:</b><br/>Latitude:"+event.latLng.lat()+"<br/>Longitude:"+event.latLng.lng());
    iwindow.open(map,this);
    } 
}
函数dulote()
{
var-route=[];
无功温度;
temp=document.getElementById(“”).value;
路线=温度拆分('&');
//循环以添加位置并绘制线
var path=polyline.getPath();

对于(var i=0;i设置UpdateMode=“Conditional”,并将按钮设置为AsynPostBacktrigger。这可能会解决问题。

我会放弃您现有的大部分逻辑

我会让按钮点击,在你的代码背后向一个Web服务发送一个jquery ajax帖子,它会将一个数组返回给你的ajax帖子,然后在你的ajax帖子的成功部分,我会触发你的javascript例程

我上面描述的是我几乎所有谷歌地图通话的方式……在我读过的关于这个主题的近100页中,我还没有看到一种更合适的方式。如果你需要了解更多关于如何使用这种方式的信息,请告诉我

下面是另一个很好的页面,介绍如何执行jquery ajax post:


这个问题与谷歌地图无关。与这个问题相关的大多数答案都是-使用更新面板,因为他们的问题不是在重新加载时丢失表单的其余数据。但在我的情况下,我应该避免重新加载地图本身,因为我丢失了地图上的数据。听起来很合理,对吗?为什么要使用ASP/Mysql??PHP/Mysql更适合与许多使用Ajax或JQUERI的地图示例一起使用。我对Asp有更好的理解,而不是我是一个noob的php。Asp很好使用,只是在这种情况下我需要使用Ajax。尝试学习它。对这个问题有什么建议吗?
function droute()
{
    var route=[];
    var temp;
    temp = document.getElementById('<%= hdncroute.ClientID %>').value;
    route= temp.split('&');
    //Loop to add locations and draw line
    var path= polyline.getPath();
    for(var i=0;i<route.length;i++)
        {
            var input= route[i];
            var ltln = input.split(",",2);
            var lat=parseFloat(ltln[0]);
            var lng=parseFloat(ltln[1]);
            var pos= new google.maps.LatLng(lat,lng);
            var marker= new google.maps.Marker({position:pos,map:map});
            path.push(route[i]);
            google.maps.event.addListener(marker,'click',showiwindow);
        }
    function showiwindow(event)
    {
    iwindow.setContent("<b>Coordinates are:</b><br/>Latitude:"+event.latLng.lat()+"<br/>Longitude:"+event.latLng.lng());
    iwindow.open(map,this);
    } 
}