Я пытаюсь изучить jQuery, и мне пришло в голову, что существующий JS на некоторых моих сайтах можно заменить всего несколькими строками кода jQuery. В следующем коде я пытаюсь установить значение настраиваемого валидатора, выполнив вызов AJAX. Первый блок кода не работает должным образом, тогда как второй блок работает нормально. Целый «если он не сломался, не исправим» ответ не поможет, я действительно хочу изучить jQuery. Для записи я разместил предупреждения в коде, и они оба вернули тот же результат, только один из них устанавливает аргументы, а другой - не по какой-то причине.jQuery и ASP.NET Custom Validator
Почему этот код не работает:
function CheckForUserName(sender, args)
{
args.IsValid = true;
var url = "/somepage.aspx";
MakeCall(url, function(txt) {
if (txt == "false") {
args.IsValid = false;
}
});
}
function MakeCall(url,callback) {
$.ajax({
url: url,
dataType: "text",
success: callback
});
}
этот код работы:
function CheckForUserName(sender, args)
{
args.IsValid = true;
var call = MakeCall();
if (call == "false")
{
args.IsValid = false;
}
}
function MakeCall()
{
var xmlHttp;
var validation=true;
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="/somepage.aspx";
xmlHttp.onreadystatechange=function()
{
if (xmlHttp.readyState==4)
{
if (xmlHttp.status==200)
{
return xmlHttp.responseText;
}
else
{
alert(xmlHttp.status);
}
}
};
xmlHttp.open("GET",url,false);
xmlHttp.send(null);
return xmlHttp.responseText;
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
«.txt» переменная также возвращение либо «истинная», либо «ложная» строка – Jason