$ .get并获得价值

时间:2012-02-16 11:55:54

标签: javascript jquery

 function get(){
      $.get('/get.php', function(data) {
          alert('one: ' + data)
          return data;
      });
  }

  var test = get();
  alert('two:' + test);

在get.php中是:

<?php echo "number"; ?>

为什么一个警报告诉我 one:数字

但两个警报告诉我 二:未定义

如何在函数外获取此值?

3 个答案:

答案 0 :(得分:7)

$.get调用是异步的。这意味着你传递了一个回调(你的function(data) { ... },它会被调用的结果执行。你不能从回调里面return - 当它被执行时,你的外部函数(做) $.get)已经返回。相反,尝试这样的事情:

// callback will be executed with the response from your GET request
function get(callback){
    $.get('/get.php', callback);
}

// Call get with a callback receiving the response
get(function(data) {
    alert('two:' + data);
});

这是在编写javascript代码时必须习惯的模式。

答案 1 :(得分:1)

您的return data正在从ajax匿名函数返回,而不是从get()函数返回。

答案 2 :(得分:1)

这是因为当调用此语句时,函数get()已经返回之前已执行$ .get()的回调。请注意,ajax请求是异步

执行步骤是什么:

  1. 致电get()
  2. 启动$ .get()的Ajax请求
  3. get()返回
  4. ajax请求结束并执行$ .get()的回调
  5. 要处理这种情况,通常会将回调传递给参数执行:

    function get(callback) {
        $.get('/get.php', function(data) {
            if ($.isFunction(callback)) {
                callback(data);
            }
        });
    }