您好我有这个功能:
function makeTweet(params) {
var tweetID = params.tweetID;
var tweetDate = params.tweetUrl;
var tweetText = params.tweetText;
var tweetUrl = params.tweetUrl;
var authorName = params.tweetDate;
var authorNickname = params.authorNickname;
var authorAvatar = params.authorAvatar;
if ( haveOauth() == true ) {
alert("We have the account, make the reply");
}else{
alert("We do not have it");
}
}
它应该得到以下函数的结果并理解它是返回true还是false并根据它执行某个操作。
我该怎么办?无论我现在做什么,都会返回相同的结果。 这里不对劲。 感谢
function haveOauth() {
var user_id = "1";
var data = $.ajax({
type: "POST",
url: "uspolitics_pulse/functions.php",
data: { type: 'checkOauth', user_id: user_id },
async: false,
success : function(data) {
if(data) {
return false;
}
}
});
}
答案 0 :(得分:1)
async: false
,但您可以尝试替换
if(data) {
return false;
}
与
var result = false;
var data = $.ajax({
// ...
success : function(data) {
result = data;
}
});
return result;
但为什么不让haveOath
接受自己的回调
function haveOauth(callback) {
var user_id = "1";
var data = $.ajax({
type: "POST",
url: "uspolitics_pulse/functions.php",
data: { type: 'checkOauth', user_id: user_id },
success : function(data) {
callback(data);
}
});
}
然后
function makeTweet(params) {
var tweetID = params.tweetID;
var tweetDate = params.tweetUrl;
var tweetText = params.tweetText;
var tweetUrl = params.tweetUrl;
var authorName = params.tweetDate;
var authorNickname = params.authorNickname;
var authorAvatar = params.authorAvatar;
haveOauth(function(data) {
if (data) {
alert("We have the account, make the reply");
}else{
alert("We do not have it");
}
});
}
答案 1 :(得分:0)
试试这个:
function haveOauth() {
var result = true;
var user_id = "1";
var data = $.ajax({
type: "POST",
url: "uspolitics_pulse/functions.php",
data: { type: 'checkOauth', user_id: user_id },
async: false,
success : function(data) {
if(data) {
result = false;
}
}
});
return result;
}
答案 2 :(得分:0)
类似于迈克尔·斯旺的回答 - 因为我认为你无法达到真实的情况。
function haveOauth() {
var user_id = "1";
var data = $.ajax({
type: "POST",
url: "uspolitics_pulse/functions.php",
data: { type: 'checkOauth', user_id: user_id },
async: false,
success : function(data) {
if(data) {
return false;
}
}
});
return true;
}
答案 3 :(得分:0)
函数haveOauth
包含一个不建议同步的AJAX调用,正如@AdamRackis指出的那样。 (除此之外,传递给return
的回调函数中的$.ajax
没有达到您想要的效果,并且您在某处错过了return true
- 请参阅@MichaelSwan的解决方案。)
您可以使用在haveOauth
中传递检查结果的回调来使您的代码异步:
function haveOauth(callback) {
var user_id = "1";
$.ajax({
type: "POST",
url: "uspolitics_pulse/functions.php",
data: { type: 'checkOauth', user_id: user_id },
success : function(data) {
if (data) { // or whatever check needs to be made
callback(true); // signal that authenticated
} else
callback(false); // signal that not authenticated
}
});
}
然后在makeTweet
:
haveOauth(function(isAuthenticated) {
if (isAuthenticated)
alert("We have the account, make the reply");
else
alert("We do not have it");
});