我正在尝试验证输入的电子邮件是否存在于数据库中,并根据此结果执行代码。为此,我调用一个Javascript函数,它调用ajax jquery方法到一个php页面,它检查输入的电子邮件的id是否存在于数据库中。 使用的代码是:
function validateEmail()
{ var username= document.getElementByName("email").value;
alert("Username is"+ username);
$.ajax({
type: "POST",
url: "emailCheck1.php",
data: "username="+username,
success: function(result){
if(result=="checked"){
return true;
}
else
{
document.getElementById("errorEmail").style.display="inline";
return false;
} }
error: function(xhr){
alert("An error occured: " + xhr.status + " " + xhr.statusText);
}
});
但问题是函数在ajax方法完成之前返回值。所以返回值不正确。 如何在ajax方法完成之前使函数不返回任何值,并基于ajax方法的返回值返回所需的值... 任何帮助将受到高度赞赏......
答案 0 :(得分:0)
一旦ajax完成,你需要使用回调来处理值,或者使查询同步(这可能是错误的。)
如果要在方法上设置参数,可以查看函数currying以指定回调。
function partial(fn) {
// A reference to the Array#slice method.
var slice = Array.prototype.slice;
// Convert arguments object to an array, removing the first argument.
var args = slice.call(arguments, 1);
return function() {
// Invoke the originally-specified function, passing in all originally-
// specified arguments, followed by any just-specified arguments.
return fn.apply(this, args.concat(slice.call(arguments, 0)));
}
function doRequest()
{
callback = partial(doSomething, "Test Value");
$.post('action', {json_arg: "Test Arg"}, callback);
}