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 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 +