JS 自动调用了后台代码,该怎么处理
JS 自动调用了后台代码
前台:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
function kk()
{
var k="<%=Dow() %>";
alert(k);
} </script>
</head>
<body>
<form id="form1" runat="server">
<a href="#" id="dd" onclick="kk()">234234</a>
</form>
</body>
</html>
后台:
public string Dow()
{
return "123";
}
问题:为什么在页面加载的时候就执行了 后台的 Dow() 函数,而不是在我点击的时候执行?
求答案!!!!!!!!!!!!!!!!!!!!!!!!
------解决方案--------------------
前台
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function kk() {
var k = "<%=Dow() %>";
alert(k);
} </script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="#" id="dd" onclick="kk()">234234</a>
</div>
</form>
</body>
</html>
后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string Dow()
{
return "123";
}
}
上面是我随便创建的一个页面 正常 你看哈
------解决方案--------------------
楼主你要学习下网页加载的顺序。它分先后顺序,,
后台加载 》 HTML页面加载 》 下载到本地,》 本地DOMready 事件》等等各种AJAX请求
那么你在后台加载完后,这时候服务器端开始加载HTML页面,这个过程中HTML页面可以访问后台程序的任何PUBLIC值和函数,如果是值那么直接取出来:比如你后台有public string Name{get {return "adfa "}};那么后台就会执行这个get 请求,如果是函数的话同样会执行这个函数。。。所以在你的代码里var k= " <%=Dow() %> ";这里的dow()函数此时就执行了。。并且返回你要的字符串,而并不是想要的那种后台函数的引用。。然后页面加载完成后下载到本地等等
------解决方案--------------------
在页面上写一个隐藏按钮,js中调用它的click就可以了
------解决方案--------------------
因为所有服务器端的代码都是先执行,支持完毕,才发送到客户端
你可以这样
function kk() {
ajax调用方法
}
------解决方案--------------------
最好的方法是采用回调的方法
前台:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
function kk()
{
var k="<%=Dow() %>";
alert(k);
} </script>
</head>
<body>
<form id="form1" runat="server">
<a href="#" id="dd" onclick="kk()">234234</a>
</form>
</body>
</html>
后台:
public string Dow()
{
return "123";
}
问题:为什么在页面加载的时候就执行了 后台的 Dow() 函数,而不是在我点击的时候执行?
求答案!!!!!!!!!!!!!!!!!!!!!!!!
------解决方案--------------------
前台
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function kk() {
var k = "<%=Dow() %>";
alert(k);
} </script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="#" id="dd" onclick="kk()">234234</a>
</div>
</form>
</body>
</html>
后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string Dow()
{
return "123";
}
}
上面是我随便创建的一个页面 正常 你看哈
------解决方案--------------------
楼主你要学习下网页加载的顺序。它分先后顺序,,
后台加载 》 HTML页面加载 》 下载到本地,》 本地DOMready 事件》等等各种AJAX请求
那么你在后台加载完后,这时候服务器端开始加载HTML页面,这个过程中HTML页面可以访问后台程序的任何PUBLIC值和函数,如果是值那么直接取出来:比如你后台有public string Name{get {return "adfa "}};那么后台就会执行这个get 请求,如果是函数的话同样会执行这个函数。。。所以在你的代码里var k= " <%=Dow() %> ";这里的dow()函数此时就执行了。。并且返回你要的字符串,而并不是想要的那种后台函数的引用。。然后页面加载完成后下载到本地等等
------解决方案--------------------
在页面上写一个隐藏按钮,js中调用它的click就可以了
------解决方案--------------------
因为所有服务器端的代码都是先执行,支持完毕,才发送到客户端
你可以这样
function kk() {
ajax调用方法
}
------解决方案--------------------
最好的方法是采用回调的方法
- HTML code
<%@ Page Language="C#" EnableViewState="false" %> <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> private string ReturnBackValue = " 返回到客户端的内容 | "; //声明函数,用来返回到客户端。 public string GetCallbackResult() { return ReturnBackValue;//将结果返回客户端 } //声明一个函数,用来接收客户端的参数;函数名字不可以随便,必须是RaiseCallbackEvent才可以 public void RaiseCallbackEvent(String eventArgument) { this.ReturnBackValue += eventArgument; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function myfunction(arg) { <%=Page.ClientScript.GetCallbackEventReference(Page, "arg", "showMsg","")%>; } function showMsg(rValue) { alert(rValue); } alert("刷新测试"); </script> </head> <body> <form id="form1" runat="server"> <input type="button" onclick="myfunction('客户端传入的参数')" value="无刷新调用" /> </form> </body> </html>