日期:2014-05-17  浏览次数:20536 次

C#后台调用js然后js传值给后台,求解,急急急急急
后台
  Page.RegisterStartupScript("ggg", "<script>getAddress(" + "23"+ "," + "13"+ ");</script>");

前台
 function getAddress(ptlat,ptlon) 
    {
       var latlng= new GLatLng(ptlat,ptlon);
        var geocoder = new GClientGeocoder();
        geocoder.getLocations(latlng,showAddress);
    } function showAddress(response) 

var point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]); 
var address=place.address;
 }

最后前台需要往后台传的值是address,刚开始的做法是
<input id="address" name="address"  runat="server"/>
 document.getElementById("<%= address.ClientID %>").value=place.address;
这样,结果后台怎么也取不到。
谁能给出解决方案。。。着急啊。

------解决方案--------------------
看得出来,LZ是在调用Google_Map,JS是要传入经纬度吧
你将它们放在一个隐藏域中不就好了
<asp:HiddenField ID="hfLatLng" runat="server" />
JS中加一句:
document.getElementById("<%=hfLatLng.ClientID%>").value= place.Point.coordinates[1] + "
------解决方案--------------------
" + place.Point.coordinates[0];
-----------------
后台取值:
//先判断空否
string[] point = hfLatLng.Value.Split('
------解决方案--------------------
');
Page.RegisterStartupScript("ggg", "<script>getAddress(" + point[0] + "," + point[1] + ");</script>");

------解决方案--------------------
可以通过你getAddress函数对隐藏控件赋值,然后在后台获取
<input type="hidden" runat="server" id="xx" />
注意编译后的ID变化,加了runat="server"在后台可以获取
------解决方案--------------------
<script type="text/javascript" >
    var name = "jacky";
    function getName(name) {
        document.getElementById("name").value = name;
    }
</script>
<input type="hidden" runat="server" id="name" />

 string name = this.name.Value;


------解决方案--------------------
用UseCallback

后台用继承接口ICALLBACKHANDLE