[英]jQuery not returning true or false
所以我這樣做:
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()
alert(recievedData[0]);
的loginFunc()
alert(recievedData[0]);
我如何使布爾返回$('#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);
});
});
JSON請求的響應是異步的。 logicFunc()
在JSON請求的響應回調之前返回。
您需要編寫一個回調方法來處理響應。 就像是:
function handleResponse(data){
// do something
}
function loginFunc(userNameOrEmail, passWord){
var emailOrUserNameV = encodeURIComponent(userNameOrEmail);
var passWordV = encodeURIComponent(passWord);
$.getJSON("http://mysite.com/pullData/login.php?callback=?",
{
emailOrUserName: emailOrUserNameV,
passWord: passWordV
},
handleResponse
});
}
請嘗試使用回調函數。 AJAX發生異步,並且完成函數無法將值返回給包裝函數。
function loginFunc(userNameOrEmail, passWord, callbackFn){
var emailOrUserNameV = encodeURIComponent(userNameOrEmail);
var passWordV = encodeURIComponent(passWord);
$.getJSON("http://mysite.com/pullData/login.php?callback=?",{
emailOrUserName: emailOrUserNameV,
passWord: passWordV
}, callbackFn);
}
$('#loginBtnHtml').click(function(){
var emailVar = $('#email_html').val();
var pwdVar = $('#password_html').val();
loginFunc(emailVar, pwdVar, function(recievedData){
alert(recievedData[0]);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.