2013-01-23 3 views
0

이 아약스 호출 기능이 있습니다. 이어서자바 스크립트 변수가 올바른 값을 표시하지 않습니다.

function saveData(ip) 
{ 

    $JQ.ajax({ 

    type: "POST", 

    url: "all_actions.php", 

    data: 
    { 
     page_url:document.URL, 
     ip_address:ip 
    }, 

    success: function(responce) 
    { 

     if(responce) 
     { 
      var newtoken; 
      newtoken=responce; 
      return newtoken; 
     } 
    } 
    }); 
} 

나 다른 기능을 가질

function getToken() 
{ 
    var ip=myip 
    var mytoken; 
    mytoken=saveData(ip); 
    alert(mytoken); 

} 

내 내가 avlue 돌려 만약 그것이 경고 box.why의 정확한 값을 제공하고 saveData 답변 newtoken 변수 경고 경우 alert.Although에 정의 부여 토큰 mytoken에 할당되지 않았습니다.

시간 지연 문제가 있습니까? ??

도움이 필요하십니까 ...

+1

AJAX = ** 비동기 ** Javascript 및 XML. 여기에 같은 문제가 많은 질문이 있습니다 :) – Andreas

답변

0

AJAX의 첫 번째 'A'는 '비동기식'입니다. AJAX 요청이 완료되기 전에 알림이 실행 중입니다. 당신은 당신이 jQuery를의 success: function() 또는 .done() 기능의 내부에 응답 할 원하는대로 처리해야합니다

success: function(responce) 
{ 
    if(responce) 
    { 
     var newtoken = responce; 

     // Work here with newtoken... 
    } 
} 
1

당신은 asynchronous 호출에서 반환 할 수 없습니다.

success 함수 내에서 반환 데이터를 사용해야합니다. token으로 무엇을하려고 하든지간에이 코드를 success 처리기 안에 씁니다. 이것은 내가 찾고 있었던위한 솔루션입니다

success: function(responce) 
{ 

    if(responce) 
    { 
     var newtoken; 
     newtoken=responce; 

     // Global variable 
     sourceid = newtoken; 

     return newtoken; // This won't work 
    } 
} 

또한

function getToken() 
{ 
    var ip=myip 
    var mytoken; 
    mytoken=saveData(ip); // This won't return any data 
    alert(mytoken); // This won't give you anything useful 

} 
+0

나는 다른 자바 스크립트 변수에 페이지 아래에 그 값을 할당해야합니다. 왜 내가 이것을 반환하고 싶지 .. 이런이 sourceid = getToken(); –

+0

그러면'success' 핸들러 안에'sourceid = newtoken; '을 지정해야합니다. 'sourceid'는 전역 적이어야합니다. – ATOzTOA

1

안녕 친구.

function saveData(ip) 
{ 

    return $JQ.ajax({ 

    type: "POST", 

    url: "all_actions.php", 

    data: 
    { 
     page_url:document.URL, 
     ip_address:ip 
    }, 
    async: false, 

    }).responseText; 
} 
function getToken() 
{ 
    var ip=myip 
    var mytoken; 
    mytoken=saveData(ip); 
    return mytoken; 
} 
관련 문제