目的:通过jquery的ajax调用页面后台的一个函数返回一个值。
有一个asp.net的页面a.aspx我在此页面中加入了jquery
$.ajax({
  type:"POST",
  url:"a.aspx/ajaxmethod",
  data:"{'name':'test','pwd':'123'}",
  datatype:"text", //或者json
  success:function(data){
   alert(data);
  }
});
a.aspx.cs中的代码
[WebMethod]
public static string ajaxmethod(string name,string pwd)
{
    return name+pwd;
}
问题:现在单步调试的时候.cs文件只能执行Page_load中的代码,就是不会调用ajaxmethod这个函数。请教下高手是哪里出错了。

解决方案 »

  1.   

    我刚刚学习jquery,查找了下网上的资料,有人说$.ajax不能调用本页面的函数,但是我查了jquery手册,如果$.ajax参数url:“”如果为空就默认是本页面。
      

  2.   


    public static string ajaxmethod(string name,string pwd) 

        return name+pwd; 
    }
    在调用页面加response.end();
      

  3.   


    又触发page_load,又仅仅是调用一个简单方法,这种所谓的ajax方法不伦不类,不要使用。当一个方法是重量级方法,它应该自动提交用户在客户端修改过的所有内容,然后服务器端才重建页面上素有复杂而完整的所有控件,然后服务器就可以自动回复状态、装入用户修改的状态值、触发所有事件,最后它应该自动刷新部分界面内容,并且可以处理更新页面在客户端记录的ViewState,以及向浏览器写入新的cookie,等等功能。否则,如果仅是一个轻量级ajax方法(例如你可以参考asp.net ajax的标准方法来看看什么是轻量级方法),那么就不应该花费巨大代价在服务器上重建页面控件对象,而仅仅执行一个方法就足够了。这就不可能调用page_load。一个对于客户端来说是轻量级功能,却在服务器端重建页面对象,调用page_load,实在是不伦不类的ajax。在asp.net ajax正式发布之前,asp.net的客户端回调技术也是这种不伦不类的,后来asp.net ajax的发布才真正给出了asp.net的标准ajax的处理功能。只不过asp.net ajax正式发布没有赶上asp.net2.0发布,不得已在asp.net2.0发布之后作为一个独立的软件包发布,所以好多写asp.net2.0编程的入门书上都缺乏讲解asp.net ajax编程知识。
      

  4.   


    我主要的目的针对我的业务尝试下轻量级jquery的ajax方式。asp.net ajax我也用它做过一些东西,总体感觉执行的效率和可控性不高(不知道是我没有真正弄懂她还是其他原因)。
    ms也接受了jquery,我现在就是想如何能把jquery和asp.net融合在一起做点东西。你说的也有一定的道理,可是和我想要结果有些出入。纠正下你可能错误理解了我的意思,我是说我想调用ajaxmethod方法,但是到后台单步调试时候他仅仅是执行page_load,我本意不是要他执行page_load。
      

  5.   

    请问下在a.aspx页面的什么地方加response.end();
      

  6.   

    www.cnblogs.com/yoowo
    有JQuery的资料,也有你要的答案
      

  7.   

    顶上去,希望有人能告知。我的开发环境是 vs2005sp1  asp.net ajax  jquery
      

  8.   

     遇到同样问题
     顶
       按道理说不会执行 Page_Load 方法的
        而是执行我们调用的方法
      奇怪了
      

  9.   

    请问,已经解决了吗?小弟新学jquery也有这个问题,是不是要配一下ajax呢
      

  10.   

    不知道你已经掌握了没有、其实这个很简单的。通过JQUery.Ajax调用完后,要用responsewrite(要返回的数值).调用.CS文件要通过page_load方法,在这个方法中再调用你所需要写的文件就成了。很简单的。
      

  11.   

    data:"{'name':'test','pwd':'123'}",你把这里面的参数清空就没事了data:"{}",
    呵呵,我也不知道怎么回事!期待高手解决!另外,返回值可以用response.write();response.end();解决,小弟也是刚学这个,这几天一直研究呢,有空可以探讨下……
      

  12.   

    public static void ajaxmethod(string name,string pwd) 

        
        response.end();
      

  13.   

    条用本页面的很多操作部方便,建议这样:function IsLogin(Type) {
        $.ajax({
            type: "get",
            dataType: "json",
            url: "/Ajax/Lin/User.aspx?temp=" + Math.random(),
            data: "Call=5",
            //出错处理
            error: function() {
                alert("出见异常,请退出登陆关闭浏览器在打开本站!");
            },
            //发送前事件
            beforeSend: function() {
            },
            //成功后事件
            success: function(data) {
                if (Type == 2) {
                    if (data.msg == "1") {
                        alert("你已经登陆!需要更换用户名.请安全退出在打开本页!");
                        window.navigate("/Index.Shtml");
                    }
                }
                else {
                    if (data.msg == "1") {
                        $("#CKName").html(data.UserName);
                        $("#Login").hide();
                        DelDIV("Login");
                        $("#IsLogin").show();
                    }
                    else {
                        $("#Login").show();
                        $("#IsLogin").hide();
                    }
                }
            }
        });
    }后台代码: protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["Call"] != null)
            {
                switch (Request["Call"].ToString())
                {
                    case "1":
                        CheckName();
                        break;
                    case "2":
                        Reg();
                        break;
                    case "3":
                        CheckEMail();
                        break;
                    case "4":
                        Login();
                        break;
                    case "5":
                        TopLogin();
                        break;
                    case "9":
                        GetUserJson();
                        break;
                    default:
                        break;
                }
            }
            else 
            {
                Response.Write("<script language=javascript>window.navigate(\"/Index.Shtml\");</script>");
            }
        }    //检测用户可否注册
        protected void CheckName()
        {
            BHL.BLL.BHLUser bb = new BHL.BLL.BHLUser();
            Response.Write(bb.Exists(Request["Name"].ToString().Trim()));
        }    //检测EMail是否可注册
        protected void CheckEMail()
        {
            BHL.BLL.BHLUser bb = new BHL.BLL.BHLUser();
            Response.Write(bb.ExistsEMail(Request["EMail"].ToString().Trim()));
        }
      

  14.   

    url: "/Ajax/Lin/User.aspx",
    data: "Call=5&Cache=" + Math.random(),
    上面那段换下哈这样合理
      

  15.   

    调用时,为什么不用ashx文件来返回需要的数据呢
      

  16.   

    如把方法放到webservice里就可以调用到方法了。如果是普通.cs文件,要在page_load中导航一下,导航到方法
      

  17.   

    第一
    缺少一个
    contentType:"application/json",属性
    第二
    接收json类型,在alert里面用 data.d
      

  18.   

    感觉url:"a.aspx/ajaxmethod"这个写法不太正确,可以在ajaxmethod设置一个断点,看程序能不能执行到那里。ajax是需要返回值给客户端的, 只有 return name+pwd; ,没有Response
      

  19.   

    我遇到了跟楼主一摸一样的问题      <script type="text/javascript">
            $(function(){
          //alert("init");
          $("#buttonAjax").click(ajaxSend);
      })
      
      function ajaxSend(){
         
        $.ajax({
            type: "POST",
            url: "jqueryScripts.aspx/GetServerMsg",
            data: "{'user':'" + $("#txtUser").val() + "'}",
            contentType: "application/json; charset=utf-8",
            success: function(msg) { showMessage(msg); }
        });
      

      
    function showMessage(msg) {
        var msg = "(" + msg + ")";
        var json = eval(msg);
        var message = json.d;    $("#divShow").html(message);
    }
        </script>
     [System.Web.Services.WebMethod]
        public static string GetServerMsg(string user)
        {
            return string.Format("user is {0};", user);
        }我在自己的电脑上用的是vs2008 + jquery
    可以实现 但是在办公室的话  却是不行   办公室是vs2005    估计可能是vs版本的问题 不知道  有没有哪位高手可以详细的说说    感谢!! 
      

  20.   

    29楼是正解.
    调用CS中的静态方法,还需要加上[System.Web.Services.WebMethod]属性.
    LZ没加上.
      

  21.   

    楼主是否加上webservice scripts命名空间的引用
      

  22.   

      type:"GET",
      url:"a.ashx?name=aa&password=bb",
      

  23.   

    你们说的对吗,在普通的方法当中有Response对象吗