C# 验证用户名ajax、json和asp.net

C# 验证用户名ajax、json和asp.net,c#,jquery,asp.net,json,C#,Jquery,Asp.net,Json,你好, I am trying to verify if a username is taken or available by asp.net page [CheckusernameAvailable.aspx] <%@ Language="C#" AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs" Inherits="Services_UsernameAvailable" %> 使用jq

你好,

I am trying to verify if a username is taken or available by
asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
使用jquery将请求发送到 asp.net页面。ASP.net页面是 很明显,当我 我让它在日志中记下一个条目 数据库我的SQL server数据库 确实显示正在传递的用户名 但是,它正在返回一个值 出于某种原因,客户端 html/javascript对此没有响应。 我不确定它是否在周末 我的html/javascript或者我的 asp.net页未返回json 信息正确吗?这是我的 json的第一次尝试

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
此时将显示“检查可用性”框 在html页面上,但它从未更改 即使sql server显示它 运行存储过程

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
Html文件

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>

我认为您的问题在于需要使用
[WebMethod]
属性来修饰方法,并且需要修饰类,以便将其暴露给客户端脚本。我通常使用web服务文件,
.asmx

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
事实上,我不确定您是否可以像现在这样使用常规类文件,但是创建一个web服务文件并引用它使用的代码,然后将其应用到您自己的文件中,看看它是否有效

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>

另外,我很惊讶您的代码能够正常工作,您的数据参数看起来不像是
json
格式。应该是
数据:“{}”
据我所知。

我相信您的问题是,您需要使用
[WebMethod]
属性来修饰您的方法,并且需要修饰类,以便向客户端脚本公开它。我通常使用web服务文件,
.asmx

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
事实上,我不确定您是否可以像现在这样使用常规类文件,但是创建一个web服务文件并引用它使用的代码,然后将其应用到您自己的文件中,看看它是否有效

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
另外,我很惊讶您的代码能够正常工作,您的数据参数看起来不像是
json
格式。应该是
数据:“{}”
据我所知。

尝试
Response.Clear()
Response.End()
,看看这是否解决了您的问题

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Clear();
        Response.ContentType = "application/json";
        string NameToLookUp = Request.QueryString["username"];
        if (NameToLookUp == null) {
            NameToLookUp = "";
        }
        DbaseExecSpWithReturnValue Sproc = new DbaseExecSpWithReturnValue();
        Sproc.SetSp("sp_CheckUsernameAvailable");
        Sproc.AddParam(1);
        Sproc.AddParam("Username",SqlDbType.Char,NameToLookUp,20);
        int RetVal = Sproc.Execute();
        Sproc.Close();
        if (RetVal == 0)
        {
            Response.Write(@"'{""success"": false}'");
        }
        if (RetVal == 1)
        {
            Response.Write(@"'{""success"": true}'");
        }
        Response.End();
    }
尝试
Response.Clear()
Response.End()
,看看这是否解决了您的问题

asp.net page [CheckusernameAvailable.aspx]

<%@  Language="C#"  AutoEventWireup="true" CodeBehind="CheckUsernameAvailable.aspx.cs"  Inherits="Services_UsernameAvailable" %>
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Clear();
        Response.ContentType = "application/json";
        string NameToLookUp = Request.QueryString["username"];
        if (NameToLookUp == null) {
            NameToLookUp = "";
        }
        DbaseExecSpWithReturnValue Sproc = new DbaseExecSpWithReturnValue();
        Sproc.SetSp("sp_CheckUsernameAvailable");
        Sproc.AddParam(1);
        Sproc.AddParam("Username",SqlDbType.Char,NameToLookUp,20);
        int RetVal = Sproc.Execute();
        Sproc.Close();
        if (RetVal == 0)
        {
            Response.Write(@"'{""success"": false}'");
        }
        if (RetVal == 1)
        {
            Response.Write(@"'{""success"": true}'");
        }
        Response.End();
    }

您在使用firebug时看到响应了吗?在使用firebug时看到响应了吗?