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

回调方法 出错 _pendingCallbacks[...].async为空或不是对象
string result;
  protected string CallBackZY;
  protected void Page_Load(object sender, EventArgs e)
  {
  CallBackZY = this.ClientScript.GetCallbackEventReference
  (this,//控件名
  "yxID",//传递进去的字符串
  "GetZYbyServer",//接受成功后处理的客户端 方法
  "context", //启动回调之前 客户端计算的客户端脚本
  "OnError",//服务器程序出错 客户端接受的脚本
  false //true 表示同步执行回调 false表示异步执行回调
  );
  }

  protected string CallBackYX()
  {
  return " var context= '中国地质大学,1000,长江大学,1001'";
   
  }  
 public void RaiseCallbackEvent(string eventArgument)
  {
  // Uncomment next line to test error handler
  // throw new ApplicationException(// "Some unhandled exception");
  int id;
  if (Int32.TryParse(eventArgument, out id))
  {
  if (id == 1000)
  result = " '数学,1000,英语,1001'";
  else
  result = "计算机,1003";
  }
  else
  {
  result = "请选择专业,0";
  }
  }
  public string GetCallbackResult()
  {
  return result;
  }

------解决方案--------------------
CS文件的类是要实现ICallbackEventHandler接口的,
还有你写的方法很乱,
 protected string CallBackYX() 

return " var context= '中国地质大学,1000,长江大学,1001'"; 

}
这是干吗的,你实现这个接口就有两个方法要实现,你实现这两个方法就可以异步调用了
给你代码看看
JScript code


function callserver(control)
        {
            if(document.getElementById("<%=txtname.ClientID %>").value!="")
            {
              //构造将要传递给GegCallbackEventReferance的参数
              var context=document.getElementById("<%=test.ClientID %>");
              var arg="CheckName|"+control.value;
              //显示提示信息
              context.innerHTML= "<IMG SRC='/movieOnline/Images/pie.gif' /><font color=blue>正在检查用户名....</font>";
              //调用服务器端函数
              <%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;
   
           }
        }

function ReceiveServerData(result, context) 
        { 
            context.innerHTML =result;
        }