日期:2014-05-18  浏览次数:20817 次

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 +