所以我这样做:
function loginFunc(userNameOrEmail, passWord){
var emailOrUserNameV = encodeURIComponent(userNameOrEmail);
var passWordV = encodeURIComponent(passWord);
$.getJSON("http://mysite.com/pullData/login.php?callback=?",
{
emailOrUserName: emailOrUserNameV,
passWord: passWordV
},
function(recievedData) {
if(recievedData[0] == 'true'){
return true;
}
else{
return false;
}
});
}
然后我这样做:
$('#loginBtnHtml').click(function(){
var emailVar = $('#email_html').val();
var pwdVar = $('#password_html').val();
if(loginFunc(emailVar, pwdVar)){
alert('good');
}
else{
alert('bad');
}
});
如果我使用 alert(recievedData[0]);
运行 loginFunc()
,它工作正常,我如何让它返回 bool 到 $('#loginBtnHtml').click();
?
当我这样做来排除故障时:
$('#loginBtnHtml').click(function(){
var emailVar = $('#email_html').val();
var pwdVar = $('#password_html').val();
var whatIsBeingReturned = loginFunc(emailVar, pwdVar);
alert(whatIsBeingReturned);
});
它发出“未定义”警报...不确定我做错了什么。
最佳答案
您无法从 ajax 返回。除非 ajax 是同步的(不要这样做!),否则您不能依赖于以任何特定顺序执行的代码。 所有需要 ajax 响应的功能都必须位于 ajax 回调中。
function loginFunc(userNameOrEmail, passWord){
...
return $.getJSON("http://mysite.com/pullData/login.php?callback=?",
}
$("#loginBtnHtml").on('click', function () {
//snip
loginFunc(emailVar, pwdVar).done(function (whatIsBeingReturned) {
console.log(whatIsBeingReturned);
});
});
关于javascript - jQuery 不返回 true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575361/