后台调用前台方法出现的问题?
后台代码:protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("<script type='text/javascript'>SetSum();</script>");
string dd = Text1.Value;
}
前台代码:
<script language="javascript" type="text/javascript">
function SetSum()
{
document.getElementById('Text1').value="123123";//////给最后计算结果赋值
}
</script>
可是在后台获取Text1值时,为什么一直是空呢? --------------------编程问答-------------------- 后台代码执行完毕后生成整个页面,然后传回客户端,js在客户端运行
所以Response.Write("<script type='text/javascript'>SetSum();</script>");
执行完毕后 SetSum没有被执行,自然取不到所谓更改后的值
另外建议用RegisterStartupScript,别用response.write输出脚本 --------------------编程问答-------------------- 为什么要这样做呐?直接在前台用JS计算并赋Text1值不行吗? --------------------编程问答-------------------- Text1.Value 既然在后台可以访问到
那么还是在后台写个方法吧,而无需在调用前台的JS把 --------------------编程问答--------------------
<script language="javascript" type="text/javascript">
function SetSum()
{
document.getElementById('Text1').value="123123";//////给最后计算结果赋值
}
</script>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" OnClientClick="SetSum()"/>
protected void Button1_Click(object sender, EventArgs e)
{
string dd = Text1.Value;
}
这样 不就行了嘛。。。。 你为什么要那么写呢。。。 --------------------编程问答-------------------- 方法1:非要后台赋值:
服务器端控件外加上updatepannel
(或者服务器端的 OnClientClick)
方法2:客服端赋值 服务器取值
前台: <asp:Button ID="Button1" runat="server" Text="取值" OnClick="Button1_Click" />
<input id="Button2" type="button" value="赋值" onclick="SetSum();"/>
<asp:TextBox ID="Text1" runat="server"></asp:TextBox>
<script language="javascript" type="text/javascript">
function SetSum()
{
document.getElementById('Text1').value="123123";//////给最后计算结果赋值
}
后台:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("<script type='text/javascript'>SetSum();</script>");
//ClientScript.RegisterStartupScript(this.GetType(), "aa", "SetSum();", true);
string dd = Text1.Text;
Response.Write(dd);
} --------------------编程问答--------------------
刷新页面了 Text1肯定是空的赛 --------------------编程问答-------------------- 直接写个JS不就OK了,按钮的客户端事件,OnClientClick="SetSum();"不就完事了?楼主是这个意思? --------------------编程问答-------------------- asp.net整个页面生命周期先搞清楚。什么先执行,什么后执行。后台还没执行完,HTML还没呈现,当然没值 --------------------编程问答-------------------- 调用前台方法可以用:
ScriptManager.RegisterStartupScript(this, this.GetType(), "SetSum()", true);
--------------------编程问答--------------------
++1 --------------------编程问答-------------------- 太混乱了,服务器端怎么可能调用得到javascript --------------------编程问答-------------------- 参考:
CS是怎样调用js的方法:
http://www.cnblogs.com/insus/articles/1945539.html
或者:
http://www.cnblogs.com/insus/articles/1945582.html --------------------编程问答-------------------- ClientScript.RegisterStartupScript(GetType(), "myscript", "<script>SetSum();</script>");
--------------------编程问答-------------------- 看下页面执行的生命周期吧 --------------------编程问答-------------------- 首先 第一你检查下你的写的 SetSum() 这个方法要放在BODY里 因为我估计你那个Text1 肯定是服务器控件
第二:对于取服务器控件ID 你应该使用
function SetSum()
{
document.getElementById('<%=Text1.ClientID%>').value="123123";//////给最后计算结果赋值
}
--------------------编程问答-------------------- 刷新了哥们。 --------------------编程问答--------------------
是这个问题。请问大家,在后台调用js函数时,如何执行js函数,然后再执行后台代码???(因为我的这个项目是,在后台将控件赋值,然后调用js,js在根据控件的内容 做出一些处理后,再将处理后的结果赋值给某控件,然后后台 再取出最后处理的结果。)有人可能会说直接在后台处理不就行了吗? --------------------编程问答-------------------- 前台:
<asp:Button ID="Button1" runat="server" Text="取值" OnClientClick="SetSum()" OnClick="Button1_Click" />
function SetSum()
{
//这里是客户端代码
if(true)
{
return true;//执行客户端事件后执行服务器端事件 Button1_Click
}
else
return true;//仅执行客户端事件
} --------------------编程问答-------------------- 刚才写错了 不好意思:
前台:
<asp:Button ID="Button1" runat="server" Text="取值" OnClientClick="SetSum()" OnClick="Button1_Click" />
function SetSum()
{
//这里是客户端代码
if(true)
{
return true;//执行客户端事件后执行服务器端事件 Button1_Click
}
else
return false;//仅执行客户端事件
} --------------------编程问答--------------------
恩,可以这样,但是这样之后 ,后台并没有给控件赋值,然后就直接直接了js --------------------编程问答--------------------
路过~~~~~~~~ --------------------编程问答--------------------
补充:.NET技术 , ASP.NET