2014-02-14 2 views
-2

범위 지정 문제가 있습니다. 알아낼 수 없습니다.

이 코드를 참조하십시오

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

      }); 

    jq.done(function(data){ 

    }) 
},1000); 

// How to access jq object here? 

가 어떻게 JQ 외부의 setTimeout에 액세스 할 수 있습니까? 다음과 같이 시간 제한 정의에서 라이브 샘플 http://jsfiddle.net/g54Cx/

+0

범위 초과는 시간 초과입니다. 그걸로 무엇을하고 싶니? – Mathletics

+0

나는 그것을 시험해 보았다, 그것은 doesnt 일한다. 또한 "전역 변수가 나쁜 것"에 관해서 조언하십시오 – Thomasmkov

+1

질문이 _how 인 경우 jq_에 액세스 할 수 있습니다. 그러면 절대적으로 작동합니다. 그러나'jq'의 VALUE는 아마 당신이 생각하는 것이 아닙니다. 우리가하려는 일을 보여주십시오. 여기에 XY 문제가 있습니다. – Mathletics

답변

0

이동 var jq;의 : 다른 제안을 추가

var jq; 

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

     }); 

     jq.done(function(data){ 

     }) 
}, 1000); 

console.log(jq); 
+0

이 경우 settimeOut 이후에 호출되는 jq에는 setTimeout 이후에 jq.always()를 호출 할 수없는 메소드가 없습니다. – Thomasmkov

+1

물론입니다. 1000 밀리 초 후에 만 ​​사용할 수 있습니다. –

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