function getCChatStatus() {
jQuery.ajax({
type: "POST",
url: "index.php?page=CChatAction",
data: { action: "getStatus" }
}).done(function(msg) {
var cChatStatus = jQuery.parseJSON(msg);
return cChatStatus;
});
}
function CChatOptions() {
var test = getCChatStatus();
alert(test);
}
正在返回“test is undefined”。 如何解决这个问题?我已经尝试过异步:false。
由于
答案 0 :(得分:1)
如果使用jQuery.ajax之类的异步函数,则必须使用回调函数来评估结果。
因此,你的getter必须是异步的:
function getCChatStatus(callback){
jQuery.ajax({/*...*/})
.done(function(){
callback(jQuery.parseJSON(msg))
})
}
你的测试必须看起来像:
function CChatOptions() {
getCChatStatus(function(status){
alert(status)
})
}
答案 1 :(得分:1)
ajax函数是异步的,当你调用警报时它还没有返回。
function getCChatStatus(callback) {
jQuery.ajax({
type: "POST",
url: "index.php?page=CChatAction",
data: { action: "getStatus" }
}).done(function(msg) {
var cChatStatus = jQuery.parseJSON(msg);
callback.call(cChatStatus);
});
}
function CChatOptions() {
getCChatStatus(function(test) {
alert(test);
});
}
你也可以这样做:
function getCChatStatus() {
var CChat = jQuery.ajax({
type: "POST",
url: "index.php?page=CChatAction",
data: { action: "getStatus" }
});
return CChat;
}
function CChatOptions() {
var cChatStatus = getCChatStatus();
cChatStatus.done(function(msg) {
alert(jQuery.parseJSON(msg));
});
}
答案 2 :(得分:0)
您的getCChatStatus()
函数未返回任何内容。即使使用async: false
,您的函数也需要返回$.ajax()
调用的返回值。考虑返回从异步$.ajax()
调用获得的实际可观察对象并使用它,而不是运行同步AJAX请求。
答案 3 :(得分:-1)
试试这个应该有用!!
function getCChatStatus() {
$.ajax({
type: "POST",
url: "index.php?page=CChatAction",
success:function(msg){
var cChatStatus = jQuery.parseJSON(msg);
alert(cChatStatus); //if this alert works then that test will work..
return cChatStatus;
});
}
function CChatOptions() {
var test = getCChatStatus();
alert(test);
}