日期:2014-05-17  浏览次数:20519 次

客户端回调无反应
前台
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>回调</title>  
  <script type = "text/javascript" language ="javascript" >
  function CallServerFunction()
  {  
  //定义arg变量,存储页面中“id”属性为“word”元素的“value”属性值
  var arg = document.getElementById("word").value;
  //调用UseCallback函数,并传递arg变量,该变量最终将传递到RaiseCallbackEvent()方法
  UseCallback(arg);
  }
  //接收回调服务器端传过来的结果数据(即服务器端的Result变量值),该函数名为GetCallbackEventReference()的第3个参数
  function ReceiveServerData(result)
  {
  document.getElementById("rs").innerText = result;
  }
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <div>  
  <input type = "text" id="word" />
  <br />
  <!--调用回调函数的控件必须是HTML控件,不能为服务端控件!-->
  <input type= "button" id ="btn" value = "回调" onclick="CallServerFunction();" />
  <hr />  
  <span id="rs"></span>
  </div>
  </form>
</body>
</html>

后台
public partial class 客户端回调 : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
  //定义Result变量用于存储回调的返回值
  private string Result;

  protected void Page_Load(object sender, EventArgs e)
  {
  string BRef = Page.ClientScript.GetCallbackEventReference(this,
  "arg", "ReceiveServerData", "null ");
  //将javascript函数声明赋值给BScript,BRef即为UseCallback函数的函数体
  //UseCallback函数是浏览器端函数,接收1个参数
  string BScript = "function UseCallback(arg) " +
  "{ " + BRef + "; " + "} ";
  //调用ClientScriptManager对象的RegisterClientScriptBlock方法将UseCallback函数注册到页面对象客户端脚本中
  Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
  "UseCallback", BScript, true);

  }

  //该方法是回调执行的方法,根据参数在这个方法中处理回调的内容
  public void RaiseCallbackEvent(string arg)
  {
  //arg为javascript从客户端传递的参数
  Result = "你输入的是:" + arg;
  }

  //该方法是返回回调的结果给客户端
  public string GetCallbackResult()
  {
  //返回Result到指定的客户端函数中
  return Result;
  }

}
*************************************
到底是哪里出现了问题?

------解决方案--------------------
如果是webform的,我推荐你用这个技术http://ajaxpro.codeplex.com/ 相对简单也够灵活。

微软的callback到还可以,就是不适合做项目。
------解决方案--------------------
 
没有仔细看啊,不过一般是 result.innerText;

楼主debugger一下啊


function ReceiveServerData(result)
{
document.getElementById("rs").innerText = result.innerText ;
}