Javascript变量的范围

时间:2011-10-20 08:53:55

标签: javascript

  

可能重复:
  return from a function ajax
  JavaScript asynchronous return value / assignment with jQuery

如何将数据变量输出到第二个警告语句。

        $.post("index.ajax.php", { lookup:value }, 
        function(data) {
            alert(data)
            test = data;
        })
        alert(test)

或者可以做这样的事情吗?

function confirm_search(input) {
    $.post("index.ajax.php", { lookup:input }, 
    function(data) {
        $("#temp").val(data);
    })
}

var test = confirm_search(value);
alert(test); 

3 个答案:

答案 0 :(得分:3)

你做不到。

AJAX是异步的。直到稍后

才能获得响应。

jQuery.post调用将开始 AJAX请求,并返回处理请求的jqXHR对象。脚本将继续执行(alert(test)将触发下一个),然后稍后当AJAX请求完成时(即收到HTTP响应),回调:

function(data) {
    alert(data)
    test = data;
}

将被执行。

答案 1 :(得分:0)

尝试这种方式:

var test;
$.post("index.ajax.php", { lookup:value }, 
    function(data) {
       alert(data)
       test = data;
})

function alertTest(){
  if(test != undefined) {   
    alert(test);
    clearInterval(t);
  }
}  

var t = setInterval(alertTest, 1000);

当完成ajax请求并分配测试时,您将获得测试值

答案 2 :(得分:0)

如果您对scenerio严格要求,请在全局范围内定义测试变量,这样您就可以在代码中的任何位置使用它。