【发布时间】:2012-01-13 15:00:52
【问题描述】:
我已经制作了这个函数,它似乎工作正常,但它返回“#”表示等待 AJAX。我试图删除回电,不看。
它需要等到 AJAX 完成才能返回。 JSP 工作正常。
怎么了?
jQuery.validator.addMethod("knidExist", function(value, element) {
var valid = "#";
$.ajax({
async: false,
type: "POST",
url: "USER.jsp",
data: "knid="+value,
dataType: "html",
success: function(msg) {
// if the user exists, it returns a string "true"
if($.trim(msg) != "true") {
//return false;
valid = false; // already exists
} else {
//return true;
valid = true; // username is free to use
}
}
});
return valid;
}, 'This USER does not exist');
【问题讨论】:
-
AJAX 中的第一个 A 代表 Asynchronous。在调用完成后试图让函数返回是一个非常糟糕的主意。你需要重新审视你的方法。
-
我很高兴有人会为我们提供哪种解决方案!
-
@Jon - 他们设置了 async: false。他们正在尝试同步调用。
-
@jfriend00:这仍然是一个非常糟糕的主意。 :)
-
@Jon - 同意。同步ajax是邪恶的。我自己永远不会使用它。锁定浏览器。您允许使用异步请求的答案可能是更好的方法。尽管如此,从纯粹的求知欲的角度来看,我还不清楚为什么 OP 的功能不起作用。
标签: jquery ajax validation