我无法从我的代码隐藏文件中访问Javascript函数。我需要这样做,因为我正在使用GoogleMaps JS API根据从我的数据库中检索到的地址向地图添加标记。我有一个名为AddMarker的函数,它接收地址作为参数,所以我需要能够从page_load函数中的代码隐藏文件中调用它。
为简化问题,我如何调用此javascript函数来显示带有从我的代码隐藏文件传递的字符串的警报?:
function hello(message)
{
alert(message)
}
提前致谢!
P.S无论是vb还是c#都可以:)
答案 0 :(得分:1)
应该这样做:
protected void Page_Load(object sender, EventArgs e)
{
string bing = "link";
Response.Write(@"<script language='javascript'>alert(bing);</script>");
}
答案 1 :(得分:1)
我不确定这是否是最佳做法,但您可以在定义后在页面的某个位置渲染对JS函数的调用。
或者您可以使用jQuery延迟调用,直到呈现页面中的所有内容。
所以
<script type="text/javascript">
$(document).ready(function(){
hello("myAspString");
});
</script>
将myAspString替换为您的内容,确保根据JS的需要保留引号。
答案 2 :(得分:1)
此代码将导致函数hello
使用后面的代码中的值进行调用:
string value = "world";
Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "my_script", string.Format("hello('{0}');", value.Replace("'", "\\'")), true);
RegisterClientScriptBlock
会在发送给浏览器的HTML输出中附加正确的<script>
标记,并将代码注入其中。
第二个参数是脚本的“键”,它使您能够拥有多个语句并检查是否已根据键注册了特定语句。最后一个参数告诉框架为您添加<script>
标记。
您需要使用正确的转义序列替换任何单引号,以避免在包含单引号时断开字符串,因为这是用于将值传递给函数的“分隔符”。
答案 3 :(得分:1)
您可能会认为这是一个黑客,但您可以始终将您的消息放在一个html元素中,如:
<p id='message' style='display: none;'>Your Message</p>
然后在你的javascript中:
function hello()
{
var m = document.getElementById('message').innerHTML;
alert(m);
}