2009-09-30 3 views
0

죄송합니다.이 질문은 중복되었지만 다른 솔루션에서 문제를 해결할 수없는 경우 죄송합니다.AJAX 요청에서 글로벌 변수로 돌아 가기

나는 sepate 파일에이 코드는 내 주요 지수에 포함되어있어 :

var getSuggestedData = {  
serviceURL: $("input[name=suggestedServices]").val(), 
dataR:"",  
doRequest:function(){ 
    //request data to controller 
    $.ajax({ 
     url:this.serviceURL, 
     success:function(msg){    
      this.dataR = msg;    
     }   
    })     
} 

내 인덱스에서 그것의이 방법을 변수 "DATAR"를 얻으려고}

정의되지 않음! 제발 누군가 날 도와 줄 수 있어요?

$().ready(function() { 
getSuggestedData.doRequest(); 
alert(getSuggestedData.dataR); 

});

미리 감사드립니다.

답변

0

dataR 개체에 액세스 할 수없는 이유는 success 메서드에서 반환 된 결과와 같은 컨텍스트가 아니기 때문입니다.

한 기술은 다음과 같이 변수에이에 대한 참조를 유지하는 것입니다

var self = this; 

using the jquery library! 
    $(this.button).bind('click',{self:this},function(event) 
    { 
     var that = event.data.self; 
     alert(that.num); 

    }); 

또한 나는 "이"키워드에 대한 자세한 설명하는 아래의 게시물을 확인하실 수 있습니다.

http://azamsharp.com/Posts/57_I_mean__this__not__this_.aspx

+0

안녕하세요, 죄송 합니다만 전 완전히 귀하의 제안을 이해하지 못합니다. 내 코드를보고 내가 뭘 잘못하고 있는지 설명해 줄 수 있니? 성공 함수 내에서 this.dataR에주의를 기울이면 올바른 값을 얻지 만, 다른 곳에서 그렇게하려고하면 그 값을 얻을 수 없습니다 ... 어떻게해야합니까? 고맙습니다. – Teknotica

+0

Meder가 제안한 접근법을 시험해보고 알려주십시오! – azamsharp

0

메모리가 바로 내를 제공하는 경우가 ...

this.dataR = msg; 

아마

getSuggestedData.dataR = msg 

는 '이'참조 jQuery를에 공급되는 개체에 대한 것 할 필요가 당신을 원래 개체를 참조해야합니다. 나는 당신이 직접이 이름으로 접근 할 수 있는지, 아니면 다른 방법을 사용해야 하는지를 잊어 버린다. 그렇지 않으면 나에게 알려줘.

+0

안녕 Meder, 나는 당신의 방법을 시도하고 결과는 동일합니다. 그런 다음 텍스트 필드에 결과를 인쇄 해 보았습니다. 생각했던 것처럼 변수에 경고를 보내면 아직 값이 지정되지 않았고 비어 있습니다 ... 그래서, 무엇을 권하고 싶습니까? 감사! – Teknotica

+0

설명을 새 코드로 업데이트 할 수 있습니까? 콜백 함수 내부에서 경고 (getSuggestedData)를하면 어떻게됩니까? –

+0

또한 $ (function() {/ * code * /})를 수행해야합니다. , 표준 컨벤션. –