【发布时间】:2009-05-29 21:49:55
【问题描述】:
我正在尝试学习 jQuery,我突然想到,我的一些网站中的现有 JS 可以只用几行 jQuery 代码替换。在下面的代码中,我试图通过进行 AJAX 调用来设置自定义验证器的值。第一个代码块不能正常工作,而第二个代码块工作正常。整个“如果它没有坏就不要修复它”的答案没有帮助,我真的很想学习 jQuery。作为记录,我在代码中放置了警报,它们都返回完全相同的结果,只有一个是设置 args 而另一个不是出于某种原因。
为什么这段代码不起作用:
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”变量也返回“true”或“false”字符串
标签: asp.net jquery validation