从函数返回,ajax

时间:2015-06-18 11:49:23

标签: javascript ajax

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

3 个答案:

答案 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成功的函数。