Я работаю над приложением, в котором есть форма регистрации, и я должен показать пользователю, существует ли имя пользователя или нет.
Я использую asp.net mvc3 и планировал использовать AJAX для достижения этой цели.
У меня есть форма
<tr>
<td>User Name*</td>
<td><input id="UserName" name="UserName" type="text" onblur="check(this.value);"/></td>
<td id= "UName"></td>
</tr>
, который вызывает файл .js с содержимым фолдинга
function check(User) {
...
var url = "/UserNameCheck/Index";
url += "?User=" + User;
xmlHttp.onreadystatechange = state_Change;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function state_Change() {
if (xmlhttp.readyState == 4) {// 4 = "Response loaded"
if (xmlhttp.status == 200) {// 200 = Response Error Free
document.getElementById("UName").innerHTML = xmlHttp.responseText
}
else {
alert("Problem retrieving XML data");
}
}
}
Я предупредил имя пользователя и получаю правильное введенное значение. Теперь URL-адрес - / UserNameCheck / Index, где UserNameCheck - это контроллер, а Index - это метод.
Контроллер имеет этот код.
public ActionResult Index(string User)
{
string UserName;
try
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
UserName = Request.QueryString["User"];
ConnectionPackage.ConnectionClass cc = new ConnectionPackage.ConnectionClass();
conn = cc.con;
string sql = "Select UserName FROM UserDetails where UserName = '" + UserName + "'";
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = CommandType.Text;
object p = cmd.ExecuteScalar();
cmd.ExecuteNonQuery();
string u = (string)p;
if (u.Length==0 || u.Equals("NULL") || u.Equals("null")||u.Equals("Null"))
{
return View();
}
return null;
}
catch (Exception ex){
}
и представление имеет
String buffer = " <table><tr><td id = 'UName' >" This user name already exists. Please select some other unser name.
buffer = buffer + "</td></tr></table>";
response.getWriter().println(buffer);
Я тоже пытался написать
Response.Clear();
Response.Write("UserName already exists. Please select another UserName");
Response.End();
вместо возврата View.
Но в обоих случаях я не получил никакого сообщения о том, что имя пользователя существует, хотя я набрал имя пользователя, которое уже присутствовало в базе данных.
Строка подключения работает для вставки в базу данных, поэтому я не думаю, что с этим есть проблема. Есть ли проблема с URL, который я упомянул в файле js? Или весь мой подход неверен?
Я в основном из Java, поэтому не знаю много о asp.net. Пожалуйста, помогите.
Заранее большое спасибо.