我不想在cs文件的pageload里面去判断什么request["***"] ==null之类的之后再去调用这个cs里的方法~
~上面这种方式能执行~没有问题~
~我想直接通过.ajax()方法直接调用标注为[webmethod]的后台方法但是断点始终不会跳到那个方法里面去~~
请各位帮帮忙~帮我看下环境:
windows 2003       vs2008 sp1      jquery1.4.2html:
<script language="javascript" type="text/javascript">
function logon() {
            var nametxt = $("#name").val();
            nametxt = $.trim(nametxt);
            var pwdtxt = $("#pwd").val();
            pwdtxt = $.trim(pwdtxt);            $.ajax({ type: "post", url: "Login.aspx/UserLogin", data: { "name":nametxt, "pwd":pwdtxt}, dataType: "text", success: function(txt) {
                alert(txt);
            }
            });            tb_remove();
        }
</script>
<input type="button" onclick="logon();" value="登录" />
Login.aspx.cs:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }    [WebMethod]
    public string UserLogin(string name, string pwd)
    {
        if (name == "123" && pwd == "123") return "success";
        else return "用户名或密码错误!";    }}

解决方案 »

  1.   

    Login.aspx/UserLogin这个什么意思??UserLogin/Login.aspx这样的吧?
      

  2.   

    我想通过.ajax()传入两个参数到后台的方法,通过判断再返回一个字符串给前台~
      

  3.   

    jq这个方法没用过!偶还是用原始的httpRequest哎 out 了
      

  4.   

    Login.aspx/UserLogin 写法没错~~前面是页面地址~后面是方法名称
      

  5.   


    前面是页,后面是方法,只是,他这个不是Web服务,但是这么做的,有意思,用法创新了,
    我等下也试试!如果改成ashx 这类的,肯定是可以的!断点不进去,只有两种可能:
    一、地址错了
    二、那个标记得WebMthod的页有问题!
      

  6.   

    楼主确定是没有进入Method方法体?
      

  7.   

    楼主可以将WebMethod换成一般处理程序(ashx)试试看
      

  8.   

    jquery 好像没法直接调用后台的方法吧
      

  9.   

    function Tip(data)
    {
        if(data=='0')
        {
            
        }
        else
        {
            alert("用户名不可用,请尝试其他名称");
            document.getElementById("useraccount").value="";
            
        }}
    $(document).ready(function(){
        $("#useraccount").blur(function(){
        if(validateUserName()==false)
        {
            
        }
        else
        {
            var name = $("#useraccount").val();
            $.ajax({
                 type:"POST",
                 url:"CheckUserName.ashx",
                 data:{username:name},
                 success:Tip
            })
        }    })
    })
    后台代码:
    <%@ WebHandler Language="C#" Class="CheckUserName" %>using System;
    using System.Web;
    using System.Collections.Generic;public class CheckUserName : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/plain";
            string username = context.Request.Params["username"].ToString();
            int flag = Check(username);
            context.Response.Write(flag.ToString());
        }
        
        public int Check(string name)
        {
            int flag = 0;
            List<YD.Model.F_RedistUser> userlist = new YD.BLL.F_RedistUser().GetList("*", "ispass=0 and uid='"+name.Trim()+"'","");
            if (userlist.Count > 0)
            {
                flag = 1;
            }
            return flag;
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }}
      

  10.   


    确定没进入方法体~只进入了page_load方法~
    换成ashx肯定是可以的~~但是我也是在网上看到了cs后台的[webmethod]这种调用方式所以自己在测试~但是始终不成功~
      

  11.   

    传递参数的方式没有错吗?
    试试去掉引号:data: { name:nametxt, pwd:pwdtxt}
      

  12.   


    参数传递 data:{...}里面也没错~~
    我在cs里的pageload里面能通过request["name"]和request["pwd"]得到那两个参数的值~现在的问题是不能执行到标记为[WebMethod]的方法体里面去~~
    看来实在不行只有用ashx或者在我原来的cs文件里面通过pageload里面的判断处理再
    调用那个[WebMethod]的方法了~
      

  13.   

    你要把你的方法设成公共的静态方法才可以被调用,光指定[WebMethod]是没有用的如果要操作session,还要把WebMethod的EnableSession设为true,或者[WebMethod(true)]这样。