2014-03-31 3 views
0

변수를 정의하는 함수가 있는데 함수 내부에서 그 변수를 유효하게 호출하면 올바르게 작동합니다. 내가 함수 밖에서 경고를 사용하려고하면 작동하지 않습니다. 함수 외부에서 함수를 호출하거나 경고하기 위해 무엇이 잘못 되었는가, 그리고/또는 무엇이 필요합니까? 고맙습니다. Jquery 함수 외부에서 변수 호출

$(function() { 
    $("#MyForm").submit(function(){ 
     $(':input.File').each(function() { 
      $(this).upload(
       'filephp.php', 
       function(success){ 
        var fmsg = success; 
        if(fmsg == "E") {var T = 'left';} 

        }, 
       $('#prog') 
      ) 
      alert(T); 

     }); 
     return false    
    }) 

}) 

당신이 메신저가 변수 "T"로 설정하고 쓸만 외부에서 경고하려고 볼 수 있듯이

더 폼 처리를 수행하는 기능의 외부 변수를 사용해야합니다. 감사.

+0

업로드 기능은 내가 아주 새로운 오전 비동기 하나 –

답변

2

변수 T가 범위를 벗어났습니다. 먼저 업로드 호출 외부에서 정의한 다음 업로드가 완료되면 콜백 함수에서 호출을 호출합니다. 이 예제와

편집

var T = ''; 
    ... 
    $(this).upload(
     'filephp.php', 
     function(success){ 
     var fmsg = success; 
     if(fmsg == "E") { 
      T = 'left'; 
     } 
     }, 
     $('#prog') 
    ); 
    alert(T); 
    ... 

만 문제는 경고 값이 콜백 함수가 업로드가 완료 될 때 호출하고 그 경고 이후되기 때문에 '왼쪽'없다 '는 것이다. 따라서 올바른 콜백에서 호출하여 올바른 값을 가져와야합니다.

+0

처럼 보이기 때문에 나는 그것이 가능하다고 생각하지 않습니다, 당신은 샘플 코드를 제공 할 수있는 방법이? 콜백 함수에 익숙하지 않습니다. 감사합니다 – user982853

+0

var T를 예를 들어 바깥쪽에 넣으십시오. 업로드중인 모든 파일에 대해 각 루프가 있으므로 값을 무시하지 않도록주의하십시오. –

+0

이전에했던 것처럼 함수 내에서 변수를 선언하면 해당 변수의 범위는 해당 함수 내에서만입니다. 함수 밖에서는 값을 얻을 수 없습니다. 그러나 여기에 표시된 것처럼 함수 외부에서 변수를 선언하면 함수 내에 변수를 할당 할 수 있습니다.이 값은 함수 외부에서 액세스 할 수 있습니다. – biddano

0

기본적으로 "T"를 변수로 설정해야 함수에서 T = "lol hai";와 같은 함수로 다시 정의해야합니다.

* 편집 - 그래서 거기 그것은 잘못 몇 가지 : 당신은 너무 함수의 "fmsg"빈 외부의 변수를 설정하는 데 필요한 변수 "T"와 함께했던 것처럼 http://jsfiddle.net/vAx6L/2/

. 이 링크 참조 변수로 설정하여 함수를 만들 수 있습니다 JQuery와에

: 몇 가지 추가 해제에 필요한 문자가 있었다 http://learn.jquery.com/javascript-101/functions/

이에 대한 오류 콘솔을 확인은 바이올린은 줄일 버전을 보여줍니다 예를 들어 업로드 라이브러리/플러그인이없는 것 같습니다.

var T; 
var fmsg; 
var newFunction = function(){ 
    fmsg = "E"; 
    if(fmsg == "E"){ 
     T = 'left'; 
    } 
    alert(T); 
}; // no need for a closing ")" here 
newFunction(); // This actually calls the function, should be in your document ready/ document load 
+0

공백 값을 반환합니다. – user982853

+0

빠른 생각, 아약스가 완료되기 전에 알림이 실행됩니다. 그렇다면 빈 값이 다시 나타납니다. 나는 PHP 파일을 비동기 적으로 실행하고 있기 때문에 ajax/var set이 완료되기 전에 경고를 호출하고 있을지도 모른다. 그냥 생각, 내가 맞다면,이 문제를 해결할 수있는 방법이 있습니까? – user982853

+0

아니면 성공 데이터 개체와 변수가 아닌 변수를 설정하려고하기 때문에 문자열 ??? – user982853