ajax:   JS调用C#后台函数后,C#返回int值给JS,但不知道为什么,老是报不支持此属性或方法?   
    
   
    
  分析:   
  1、跟编码有关(但是我的编码全部是改成了一致的,如果用UTF-8的话,页面的所有中文都变成了乱码)   
  2、ajaxpro机致有关(我用的是.net2005与ajaxpro2.dll)   
    
  代码如下:   
  JS 
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="reg.aspx.cs" Inherits="xiyangyang.reg" %>  
 var userName=xiyangyang.reg.checkRegName(regName).value;
    if(userName>0)
    {
        document.getElementById("varlidname").innerHTML="<img src='Images/note_error.gif'/><font color='red'>用户名已经存在不能注册</font>";
        return false;
    }    
    
  服务端   
  using   System;   
  using   System.Collections;   
  using   System.ComponentModel;   
  using   System.Data;   
  using   System.Drawing;   
  using   System.Web;   
  using   System.Web.SessionState;   
  using   System.Web.UI;   
  using   System.Web.UI.WebControls;   
  using   System.Web.UI.HtmlControls;   
    
  using   System.Text;   
  using   AjaxPro;   
    
  namespace xiyangyang
{
    public partial class reg : System.Web.UI.Page
    {        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(reg));
        }        [AjaxPro.AjaxMethod]
        public int checkRegName(string regName)
        {
            string strCheckRegName = "select count(*) from [YYGameUserDB].[dbo].[UserAccounts] where accounts ='" + regName + "'";            return DBExcute.DataBaseSql.RunExecuteScalar(strCheckRegName);        }
}    
  请哪位高手帮忙解决,万分感激! 

解决方案 »

  1.   

    我的知道了,类成员函数必须得是public的
      

  2.   

    检查引用和web.config文件里的配置
      

  3.   

    1.检查web.config中是否加入对于asp.net ajax的支持的代码
    2.检查ScriptManager中是否设置了EnableMethods=true
    3.检查后台cs中是否引用的命名空间System.Web.Services或者加入了[System.Web.Services.WebMethod]
    4.后台函数必须是public static5. 还有一种情况就是,通常,有些人在复制这个aspx页面时,经常是连同,<%@ Page Language="C#" AutoEventWireup="true" CodeFile="addSight.aspx.cs" Inherits="Page_message_addSight" %>一起复制了,所以造成文件头的映射出现错误,导致PageMethods的方法指向出现错误,而这种错误并没有显示那里错误,所以检查这样的错误。这是新手经常出现的错误。