我希望以下函数根据我的逻辑返回true或false,但函数返回undefined。
function getUserData() {
$.ajax({
type: 'POST',
contentType: 'application/json',
url: 'myservice',
dataType: "JSON",
success: function (data) {
if (data.d.UserID > 0) {
return true;
} else {
return false
}
return false;
},
error: function (error) {
return false;
}
});};
if (getUserData()) {
//do something
} else {
//redirect
}
请不要认为它是重复的,它是不同的,我不想根据那些回调函数返回我想要返回true或false的回调函数。
答案 0 :(得分:0)
试试这个:
function getUserData(callback) {
$.ajax({
type: 'POST',
contentType: 'application/json',
url: 'myservice',
dataType: "JSON",
success: function (data) {
if (data.d.UserID > 0) {
callback(true);
} else {
callback(false);
}
callback(false);
},
error: function (error) {
callback(false);
}
});
};
getUserData(function(status) {
if (status) {
//do something
} else {
//redirect
}
});
答案 1 :(得分:0)
使用下面的代码可以解决您的问题:创建一个函数,它应该返回defferd对象。
function AJAX(type,url){
this.type=type; // EX: GET , POST
this.url=url;
this.invoke = function(){
var deferred = $.Deferred();
$.ajax({
type: this.type,
url: this.url,
contentType: 'application/json',
dataType:"JSON"
success: function(response){
deferred.resolve(response);
},
error: function(exception){
console.log("Ajax call returned error.");
deferred.reject(exception);
}
});
return deferred;
};
}
现在使用适当的参数调用此函数,如下所示
var ajax=new AJAX("POST","Your action");
ajax.invoke().then(function(data){
if(data==true){
// Your code for true
}else{
// your code for false
}
});
现在您可以根据需要修改功能..