2013-03-22 2 views
1

Я пытаюсь проверить доступность электронной почты в случае изменения текста текстового поля. Ниже приведен код (я взял из сети):jquery для проверки доступности/дублирования электронной почты в базе данных

HTML (JavaScript):

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 

<script type="text/javascript"> 

    $(document).ready(function() { 

     $("#<%=txtEmailAddress.UniqueID%>").change(function() { 

      var uname = $("#<%=txtEmailAddress.UniqueID%>"); 

      var msgbox = $("#status"); 

      if (Email.val().length > 0) { 

       $.ajax({ 

        type: "POST", 

        url: "SignUp.aspx/usp_CheckEmail", 

        data: "{'args': '" + Email.val() + "'}", 

        contentType: "application/json; charset=utf-8", 

        dataType: "json", 

        success: function (msg) { 

         if (msg.d == 'Available') { 

          Email.removeClass("notavailablecss"); 

          Email.addClass("availablecss"); 

          msgbox.html('<img src="Images/a.png"> <font color="Green"> Available </font>'); 

         } 
         else { 
          Email.removeClass("availablecss"); 

          Email.addClass("notavailablecss"); 

          msgbox.html(msg.d); 

         } 
        } 
       }); 
      } 
      else { 

       Email.addClass("notavailablecss"); 

       msgbox.html('<font color="#cc0000">Email must be unique</font>'); 

      } 

     }); 

    }); 

CS:

[System.Web.Services.WebMethod] 

protected void txtPassword_TextChanged(object sender, EventArgs e, string args) 
    { 
string returnValue = string.Empty; 

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]); 


try 
{ 

SqlCommand sqlCmd = new SqlCommand("usp_CheckEmail", con); 

sqlCmd.CommandType = CommandType.StoredProcedure; 

sqlCmd.Parameters.AddWithValue("@Email", args.Trim()); 

con.Open(); 

int success = int.Parse((sqlCmd.ExecuteScalar().ToString())); 

if(success == 1) // Email Not Available 
{ 
returnValue = "<img src="Images1/n.png"><font color="#cc0000"><b>'" + args + "'</b> is already in use.</font>"; **//getting syntax error here** 

    } 
    else if(success == 0)//Email is available 
{ 
returnValue = "Available"; 
} 

} 
catch 
{ 
//Handle Error 
} 
finally 
{ 
con.Close(); 
} 

return returnValue; 
} 

    } 
} 

Получение ошибки в возвращаемое значение линии , Какой был бы правильный синтаксис? Кроме того, предполагается отображать такие изображения: na

Итак, нужно ли иметь элементы управления изображением на моей странице .aspx? Поскольку статья, из которой я получил этот код, не упоминала об управлении изображением. И если да, как мне связать их с кодом, то?

UPDATE: Heres ссылка, где я получил код от http://www.dotnetspark.com/kb/Content.aspx?id=1278

Что все пропускают из статьи ?? что еще нужно сделать? Любой, пожалуйста .. Мне нужно это ...

+0

И что говорит об ошибке? Попытка понять код, который вы собираете вместе, обычно имеет большое значение для создания хорошего решения. – nunespascal

+0

; Ожидаемый - LOL – adityawho

+0

И не означает, что ваш синтаксис неверен? Посмотрите на свои цитаты. Вам нужно избежать кавычек внутри строки. – nunespascal

ответ

0

Вы используете двойные кавычки неправильно.

returnValue = "<img src=\"Images1/n.png\"><font color=\"#cc0000\"><b>'" + args + "'</b> is already in use.</font>"; 

Это действительно вредная привычка генерировать HTML или любую разметку, подобную этой. Подумайте о том, чтобы изменить его на систему шаблонов на стороне клиента или найти более элегантное решение в фоновом режиме.

+0

Хорошо, ошибка исчезла, но вопрос больше: почему это не выполняется? У меня абсолютно ничего не происходит здесь !!! его даже не вводит метод! ... ?? – adityawho

0

Похоже, вы пытаетесь вызвать хранимую процедуру, которую использует ваш код C#, чтобы проверить, доступно ли электронное письмо с вашего клиентского вызова Ajax. Вы должны вызывать метод, который вы определили.