подтвердите имя пользователя ajax и json и asp.net - PullRequest
1 голос
/ 09 марта 2011

Здравствуйте,

I am trying to verify if a username is taken or available by

, используя jquery для отправки запроса на страницу asp.net.Страница ASP.net явно получает информацию, поскольку я делаю запись в базе данных журнала.Моя база данных SQL-сервера действительно показывает имя пользователя, передаваемое ей, и возвращает значение, однако по какой-то причине html / javascript на стороне клиента не ОТВЕЧАЕТ на это.Я не уверен, находится ли он в конце моего html / javascript или, возможно, моя страница asp.net не возвращает информацию json правильно?Это моя первая попытка json

. На странице html появляется поле проверки доступности, но оно НИКОГДА не меняется, даже когда сервер sql показывает, что он запустил хранимую процедуру

Html File.

    $(document).ready(function () {
        var validateUsername = $('#validateUsername');
        $('#username').keyup(function () {
            var t = this;
            if (this.value != this.lastValue) {
                if (this.timer) clearTimeout(this.timer);
                validateUsername.removeClass('error').html('<img src="images/ajax-loader.gif" height="16" width="16" /> checking availability...');

                this.timer = setTimeout(function () {
                    $.ajax({
                        url: 'ValidateUsername.aspx',
                        data: 'username=' + t.value,
                        dataType: 'json',
                        type: 'get',
                        success: function (j) {
                            validateUsername.html('HI!');
                        }
                    });
                }, 200);

                this.lastValue = this.value;
            }
        });
    });

// ->

Имя пользователя, действительное: az.-_

asp.net page [CheckusernameAvailable.aspx]

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

код Asp.netза страницей asp.net [CheckusernameAvailable.aspx.cs]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using UserSite.DataClasses;
using System.Data;

namespace OohruWeb
{
    public partial class ValidateUsername : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            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}'");
            }
        }
    }
}

Ответы [ 3 ]

1 голос
/ 09 марта 2011

Я полагаю, что ваша проблема в том, что вам нужно украсить свой метод с помощью атрибутов [WebMethod] и , которые необходимо оформить, чтобы класс был доступен для скрипта на стороне клиента. Я обычно использую файл веб-службы, .asmx.

На самом деле я не уверен, что вы можете использовать обычный файл класса, как у вас, но создать файл веб-службы и сослаться на код, который он использует, и применить его к своему собственному файлу, чтобы проверить, работает ли он. *

Кроме того, я удивлен, что ваш код работает, ваш параметр данных выглядит не так, как в json формате. Насколько я знаю, должно быть data: "{ }".

0 голосов
/ 09 марта 2011

Попробуйте эту статью, это может дать вам идею для проверки имени пользователя с помощью JSON

http://www.dotnetspark.com/kb/1278-check-username-availability-from-database.aspx

0 голосов
/ 09 марта 2011

Попробуйте Response.Clear() и Response.End(), чтобы узнать, решает ли это вашу проблему.

    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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...