Ajax获取数据正常,但我不知道if语句中的返回varname,内部循环,内部函数;)。
如何从此声明中返回var username
?感谢。
$.ajax({
dataType: 'json',
url: 'example.com',
type: 'POST',
success: function (data) {
for (var i = 0; i < data.users.length; i++) {
if (user_id == data.users[i].id) {
var username = data.users[i].username;
return username; // !!!How can return this
};
};
}
})
console.log(username) // error: username is not defined
答案 0 :(得分:1)
默认情况下,ajax将异步执行。这意味着返回的结果必须在回调中处理:
$.ajax({
dataType: 'json',
url: 'example.com',
type: 'POST',
success: function (data) {
for (var i = 0; i < data.users.length; i++) {
if (user_id == data.users[i].id) {
var username = data.users[i].username;
console.log(username);
}
}
}
});
ajax可以在async设置为false的情况下执行,但通常不建议这样做,因为它会锁定UI,直到您从服务器获得响应。
答案 1 :(得分:0)
Ajax是异步的。 你应该使用回调。
client.call(:init, message: { request: { tid: 'SOME_ID', .. }})
答案 2 :(得分:-1)
将其声明为全局变量。
var username;
$.ajax({
dataType: 'json',
url: 'example.com',
type: 'POST',
success: function (data) {
for (var i = 0; i < data.users.length; i++) {
if (user_id == data.users[i].id) {
username = data.users[i].username;
return username; // !!!How can return this
};
};
}
})
console.log(username);
或直接将其发送到ajax成功的函数。