我从另一个调用javascript函数如下所示,但每次调用isPassword时,它都会返回'undefined'而不是预期的True或False。我在返回之前打印它们并且它们是正确的,但是返回true;不起作用。有什么想法吗?
function isPassword(pass){
var datatosend = {};
datatosend['api'] = 'checkpassword';
datatosend['version'] = 'v1';
datatosend['pass'] = pass;
jsonAPI(datatosend,function()
{
if (typeof(responseVar['success'])=='boolean')
{
var ans = responseVar['success'];
if (ans)
{
//Returns true to changePassword();
return true;
}
else if (!ans)
{
//Returns false to changePassword();
return false;
}
}
});
}
function changePassword(){
//THE BELOW isPassword CALL IS UNDEFINED
if(isPassword(oldPass)){
successStatus.text("Current password not entered correctly");
successStatus.css('color', 'red');
clearTextAfter('changePasswordStatus', 5000);
return false
}
}
如果它更像是一个简单的问题,我可以根据请求提供更多代码。
答案 0 :(得分:2)
不完全确定jsonAPI
是什么,但如果它是一个Ajax调用,那就是异步,所以函数本身在该函数调用之后结束(并且没有返回值),而作为参数传递给jsonAPI
的匿名函数将稍后执行。此时您需要对响应做任何需要,而不是在isPassword
返回时。