2013-03-15 3 views
0

arr 값을 가져올 수 없습니다. 어떤 제안 ...중첩 된 함수에서 값 가져 오기

+1

AJAX 호출은 비동기입니다. 그것에 대해 읽어보십시오. –

+1

AJAX는 * 비동기 *입니다. AJAX 호출에서 값을 반환 할 수 없습니다. 모든 작업은 콜백에서 수행해야합니다. –

+0

문제는 게시가 완료되기 전에 값이 반환되고 "경고"되어 실제로 원하는 흥미로운 값을 할당한다는 것입니다. –

답변

0

아래의 코드와 아무것도 같다 문제는 당신이 편곡을 반환 할 때 $ .post이 그것을 그렇게, 비동기 때문이다 아직 가치가 없습니다. 이 같은

시도 뭔가 : 응답이 수신되기 전에 함수의 내용은 실행

function my_f(callback) { 
    $.post('data.php', function(data) { 
     var arr = $.makeArray($("tr",data).map(function(){ 
      return $(this).attr("id"); 
     }).get()); 
     callback(arr); 
     return false; 
    }); 
} 

my_f(alert); 
+0

감사합니다 남자 ... 그게 ... 경고 데이터,하지만 지금은 var에 데이터를 넣어? –

+0

"arr"이라는 변수에 이미 있습니다. 콜백 함수 내에서해야 할 일은 모두해야합니다. 또한, 문제가 해결되면 문제를 해결할 수 있습니다. 이것이 가장 유용한 대답이라면 그것을 받아들이십시오. 그래서이 페이지의 미래 방문자는 즉시 어떤 대답이 그들의 문제를 해결하는지 알게 될 것입니다. –

+0

괜찮 았어 ... 내가 만들었지 만 지금은 그 데이터를 var 'name'에 연결하는 방법을 모른다. 코드의 다른 부분 인 $ .post ('data.php', 'name ='+ // arr data ??? //, function (data) {.... –

0

post은 비동기 호출이므로 작동하지 않습니다. my_f()에 전화하면 post을 호출하고 post을 완료하지 않고 arr을 반환합니다.

0

AJAX는 이러한 방식으로 작동하지 않습니다. $.post은 후에 거의 항상 을 완료하려고하는 서버에 대한 비동기 요청을 호출합니다.

이것은 일반적으로 중단되는 방식입니다.

  1. (요청이 완료되지 않았기 때문에 null을 반환)
0

  • 요청 (현재 arr이 설정되어 있지만, 너무 늦었) 완료 기능을
  • 보내기 요청
  • 종료 기능을 입력 귀하의 접근 방식에는 여러 가지 문제가 있습니다. 아약스가 작동하지 않는 것을 제외하고는 arr을 설정하지 않고 모든 것이로드되기 전에 경고가 실행 중입니다. 당신이 $(//code to run)에 경고를 감싸는 경우 해당 편곡을 보여주는 경고를 얻을 것이다 것은

    function my_f() { 
        var arr = ''; 
        $.post('data.php', function(data) { 
        arr = $.makeArray ($("tr",data).map(function(){return $(this).attr("id")}).get()); 
        return false; 
        //alert(arr); ...this work 
    }); 
    return arr; 
    } 
    
    $(alert(my_f())); //return undefined 
    
  • 0

    .

    게시 기능에 전달하는 기능은 콜백 기능입니다. 콜백 함수는 응답을받을 때 실행되는 함수입니다.

    또한 "콜백"함수는 응답을 받았을 때가 아니라 게시 기능을 호출 한 후에 실행되기 때문에 콜백 함수가 아닙니다.

    또한 배열에 경고하면 많은 정보를 얻을 수 없으므로 console.log()를 사용하여 테스트하십시오.

    마지막으로 "콜백"이라는 함수가 아닌 콜백 함수 내에서 관련 값 (arr 값)을 사용할 수 있습니다.

    이 정보가 도움이되기를 바랍니다.

    관련 문제