$ .ajax()变量范围问题

时间:2014-02-14 15:03:08

标签: jquery

我有一个我无法弄清楚的范围问题。

请参阅此代码:

setTimeout(function () {
    var jq = $.ajax({

            });

    jq.done(function(data){

    })
},1000);

// How to access jq object here?

如何访问setTimeout外的jq?这是一个实时样本http://jsfiddle.net/g54Cx/

2 个答案:

答案 0 :(得分:0)

var jq;移出Timeout定义,如下所示:

var jq;

setTimeout(function () {
      jq = $.ajax({

      });

      jq.done(function(data){

      })
}, 1000);

console.log(jq);

答案 1 :(得分:0)

除了其他建议......

您可以将其传递给其他功能: http://jsfiddle.net/7aZdm/

myFunction(jq) {
  //access in here
}

setTimeout(function () {
    var jq = $.ajax({
                url: "/echo/json/",
                type: "POST",
                data: {json: '{"message": "Hello"}'},
                dataType: "json"
            });
    myFunction(jq);
    jq.done(function(data){
        $("#msg").text("Response is = " + data.message);
    })
},1000);

或者只是将它分配给窗口对象,但这通常是不好的做法

window.jq = jq