可能重复:
How to return AJAX response Text?
How to return the response from an AJAX call from a function?
所以我有一个javascript函数,我正在进行AJAX调用,看看用户是在线还是离线。它看起来像这样。
function onlineStatus(){
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
success: function(html){
return html;
}
});
}
我想将此函数的值指定为我可以使用的变量。
像这样。
var test = onlineStatus();
if (test == "true")
alert("online");
else
alert("offline");
这可能吗?我一定做错了,但无法弄清楚如何实现这个结果。感谢
//编辑: 感谢大家的帮助,抱歉,没有意识到这可能是一个重复的问题。我不知道最初要搜索什么,所以我没有看到任何相关内容。
答案 0 :(得分:6)
$.ajax
是异步的,所以你不能从onlineStatus
返回任何内容,你需要传递一个可以在ajax调用完成时调用的回调函数。
function onlineStatus(callback){
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
success: callback
});
}
onlineStatus(function(test) {
if (test == "true")
alert("online");
else
alert("offline");
});
答案 1 :(得分:4)
由于调用是异步发生的,因此您必须将回调函数传递给onlineStatus
。类似的东西:
function onlineStatus(callback){
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
success: function(html){
callback(html);
}
});
}
然后用:
来调用它onlineStatus(function (html)
{
// Do stuff with the status
});
答案 2 :(得分:1)
AJAX是异步,这就是A所代表的意思。你需要传递一个回调。
例如:
function onlineStatus(callback){
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
success: callback
});
}
onlineStatus(function(data) {
if (data == "true") {
alert "online";
}
else {
alert "offline";
}
}
答案 3 :(得分:1)
您可以简单地使用延迟对象。
function onlineStatus(){
var request = $.ajax({
url: "assets/ajax/online-offline.php",
cache: false
});
return request;
}
var test = onlineStatus();
test.done(function(html) {
if (html)
alert("online");
else
alert("offline");
});
$.ajax
返回jqXHR
,因此您可以使用.done
:
jqXHR.done(function(data, textStatus, jqXHR) {});
An alternative construct to the success callback option, the .done() method replaces the deprecated
答案 4 :(得分:0)
$.ajax
方法是异步的,因此您需要在回调中处理其返回值。
function onlineStatus(){
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
success: function(html){
if (html == "true")
alert("online");
else
alert("offline");
}
});
}
答案 5 :(得分:0)
你可以这样做.......但这不是一个好方法因为ajax的同步请求会使你的代码变慢.......
function onlineStatus(){
var data;
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
async:false,
success: function(html){
data = html;
}
});
return data;
}
或
如果您只想显示警报框,那么......
function onlineStatus(){
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
success: function(html){
if (html== "true")
alert("online");
else
alert("offline");
}
});
return data;
}
答案 6 :(得分:0)
jQuery ajax调用是一个异步调用。您必须等待才能获得结果,然后才能使用它们来显示警报。
var isOnline = false;
checkOnlineStatus();
function checkOnlineStatus(){
$.ajax({
url: "assets/ajax/online-offline.php",
cache: false,
success: callback
}
});
}
function callback(html){
isOnline = (html == "online");
showAlert();
}
function showAlert(){
if (isOnline == "true")
alert("online");
else
alert("offline");
}