JS调用C#后台变量和方法出现的问题
我前台代码是这样的<scriptlanguage="javascript"type="text/javascript">functionsel(){document.ge...
我前台代码是这样的
<script language="javascript" type="text/javascript">
function sel()
{
document.getElementById("<%=Button1.ClientID %>").click();
}
function show()
{
alert(document.getElementById("Hidden1").value);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="javascript:void(0)" onclick="sel();show();">asdfdsf</a>
<asp:Button ID="Button1" runat="server" style="dispaly:none" Text="Button"
onclick="Button1_Click1" />
<input id="Hidden1" type="hidden" runat="server" />
</div>
</form>
</body>
</html>
后台代码是这样的:
protected void Button1_Click1(object sender, EventArgs e)
{
Hidden1.Value = "123333";
}
就是我想点找链接的时候显示出Hidden1的值,但是现在有个问题,我这样做的时候是要点两次才显示正确的值,我要的是只点一次就显示正确的值,高手帮帮忙!但必须是用JS调用后台的方法! 展开
<script language="javascript" type="text/javascript">
function sel()
{
document.getElementById("<%=Button1.ClientID %>").click();
}
function show()
{
alert(document.getElementById("Hidden1").value);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="javascript:void(0)" onclick="sel();show();">asdfdsf</a>
<asp:Button ID="Button1" runat="server" style="dispaly:none" Text="Button"
onclick="Button1_Click1" />
<input id="Hidden1" type="hidden" runat="server" />
</div>
</form>
</body>
</html>
后台代码是这样的:
protected void Button1_Click1(object sender, EventArgs e)
{
Hidden1.Value = "123333";
}
就是我想点找链接的时候显示出Hidden1的值,但是现在有个问题,我这样做的时候是要点两次才显示正确的值,我要的是只点一次就显示正确的值,高手帮帮忙!但必须是用JS调用后台的方法! 展开
4个回答
推荐于2016-11-02
展开全部
方法一:
1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二:1、函数声明为public
后台代码(把public改成protected也可以)
public string ss()
{
return("a");
}
2、在html里用<%=fucntion()%>可以调用
前台脚本
< language=java>
var a = "<%=ss()%>"
或者
var ret = ' <%=GetRoomData("'+ sttm + '","'+entm+'")%>';
alert(a);
</>
方法三:1、< language="java">
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
theFrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-->
</>
<input id="Button1" type="button" name="Button1" value="按钮" onclick="java:__doPostBack('Button1','')">
方法四:< language="java">
function SubmitKeyClick()
{
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="要调用的函数名";
document.form[0].submit();
}
}
</>
<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
<input type="hidden" name="FunName"> 〈!--用来存储要调用的函数--〉
1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二:1、函数声明为public
后台代码(把public改成protected也可以)
public string ss()
{
return("a");
}
2、在html里用<%=fucntion()%>可以调用
前台脚本
< language=java>
var a = "<%=ss()%>"
或者
var ret = ' <%=GetRoomData("'+ sttm + '","'+entm+'")%>';
alert(a);
</>
方法三:1、< language="java">
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
theFrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-->
</>
<input id="Button1" type="button" name="Button1" value="按钮" onclick="java:__doPostBack('Button1','')">
方法四:< language="java">
function SubmitKeyClick()
{
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="要调用的函数名";
document.form[0].submit();
}
}
</>
<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
<input type="hidden" name="FunName"> 〈!--用来存储要调用的函数--〉
展开全部
<a href="javascript:void(0)" onclick="sel();show();">asdfdsf</a>
这里错了, 调了sel()后页面就刷新了,show()的效果就出不来了。
应该这样:
1、
<a href="javascript:void(0)" onclick="sel();show();">asdfdsf</a>
改成<a href="javascript:void(0)" onclick="sel();">asdfdsf</a>:
2、
protected void Button1_Click1(object sender, EventArgs e)
{
Hidden1.Value = "123333";
}
改成
protected void Button1_Click1(object sender, EventArgs e)
{
Hidden1.Value = "123333";
ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "show();", true);
}
试试吧~
度娘抽起风来真严重,前两天明明改了回答。。。
这里错了, 调了sel()后页面就刷新了,show()的效果就出不来了。
应该这样:
1、
<a href="javascript:void(0)" onclick="sel();show();">asdfdsf</a>
改成<a href="javascript:void(0)" onclick="sel();">asdfdsf</a>:
2、
protected void Button1_Click1(object sender, EventArgs e)
{
Hidden1.Value = "123333";
}
改成
protected void Button1_Click1(object sender, EventArgs e)
{
Hidden1.Value = "123333";
ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "show();", true);
}
试试吧~
度娘抽起风来真严重,前两天明明改了回答。。。
更多追问追答
追问
这样做是没错了,但是我JS里还有一个方法,原本是这样的:我点找链接,调用后台方法,然JS再根据后台获得的变量来判断这个变量的值,这个变量就一定就是0和1,如果是0,我把一张能修改的表显示出来,如果是1我把一张不可以修改的表显示出来!所以我的方法应该没错吧!
追答
上面已经说过了。点了链接首先会调用sel,sel里触发了Button1的单击事件,这时页面就会刷新,页面一旦刷新show就不会被执行,因此你看不到希望的结果。所以必须从后台调用show以便在页面刷新后执行show。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将.cs数据转化为Json格式活着字符串格式.
用hidden field保存这个值
在ajax javascript 里面手动解析.
用hidden field保存这个值
在ajax javascript 里面手动解析.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学习
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询