2011-09-19 3 views
0

파일을 업로드 한 후에 함수를 실행하는 업로드 스크립트를 사용하고 있습니다. javascript 변수의 값을 다시 할당하려면이 함수가 필요합니다. 내 onComplete 함수 안에있는 값에 "trackid"를 다시 할당해야합니다. 누구든지 나를 도울 수 있습니까?jquery 함수 - 전역 자바 스크립트 변수를 다시 할당

편집 : 조금 더 설명 ... 내 페이지에이 업로드 스크립트의 인스턴스가 2 개 있습니다. 첫 번째 업 로더의 응답을 URL 매개 변수로 두 번째 업 로더에 할당해야합니다. 그게 그 document.ready와 관련이 있습니까? 내 코드를 업데이트 할 것입니다.

1 스크립트

<script type="text/javascript"> 
trackid = 9999999; 
</script> 
<script type="text/javascript"> 
     jQuery(document).ready(function() { 

    $('#mainftp').uploadify({ 
    'uploader' : 'js/uploadifyposted/uploadify.swf', 
    'script' : 'js/uploadifyposted/uploadify.php?<?php echo urlencode("privateFolderWav=" . $privateFolderWav . "&userid=" . $userid. "&songid=" . $songid);?>', 
    'multi'   : true, 
    'auto'   : true, 
    'height'  : '32', //height of your browse button file 
    'width'   : '250', //width of your browse button file 
    'sizeLimit' : '51200000', //remove this to set no limit on upload size 
    'simUploadLimit' : '3', //remove this to set no limit on simultaneous uploads 
    'buttonImg' : 'img/browse.png', 
    'cancelImg' : 'img/cancel.png', 
     'folder' : '<?php echo $privateFolderWav;?>', //folder to save uploads to 
     onProgress: function() { 
      $('#loader').show(); 
     }, 
     onComplete: function(event, queueID, fileObj, response, data, trackid) { 
      $('#loader').hide(); 
      $('#allfiles').load(location.href+" #allfiles>*",""); 
      $('#filesUploaded').attr('value', ''+response+''); 
      trackid = response; 
      alert(trackid); 

      //location.reload(); //uncomment this line if youw ant to refresh the whole page instead of just the #allfiles div 
     } 
    }); 

    $('ul li:odd').addClass('odd'); 

}); 

</script> 

2 스크립트

<script type="text/javascript"> 


     jQuery(document).ready(function() { 

    $('#mainftp2').uploadify({ 
    'uploader' : 'js/uploadifymultiple/uploadify.swf', 
    'script' : 'js/uploadifymultiple/uploadify.php?<?php echo urlencode("songid=" . $songid . "&userid=" . $userid . "&trackid=");?>'+trackid, 
    'multi'   : true, 
    'auto'   : true, 
    'height'  : '32', //height of your browse button file 
    'width'   : '250', //width of your browse button file 
    'sizeLimit' : '51200000', //remove this to set no limit on upload size 
    'simUploadLimit' : '3', //remove this to set no limit on simultaneous uploads 
    'buttonImg' : 'img/browse.png', 
    'cancelImg' : 'img/cancel.png', 
     'folder' : '<?php echo $multiFolder?>', //folder to save uploads to 
     onProgress: function() { 
      $('#loader2').show(); 
     }, 
     onComplete: function(event, queueID, fileObj, response, data) { 
      $('#loader2').hide(); 
      $('#allfiles2').load(location.href+" #allfiles2>*",""); 
      $('#filesUploaded2').attr('value', ''+response+''); 

      //location.reload(); //uncomment this line if youw ant to refresh the whole page instead of just the #allfiles div 
     } 
    }); 

    $('ul li:odd').addClass('odd'); 

}); 

</script> 
+0

''trackid'가'onComplete' 내에 포함되기를 원하는 변수는 무엇입니까? – Bartek

+0

그래서 문제는 무엇입니까? –

+0

당신이 가지고있는 것이 잘 작동해야합니다. 그것의 제대로 써진. 이 수정 된 전역 변수는 일단 변경되면 어떻게해야합니까? – Marlin

답변

1

이 코드에는 트리거가 표시되지 않습니다. 페이지가로드되면 두 스크립트가 즉시 실행되는 것처럼 보입니다. 그렇다면 두 번째 스크립트가 변수 재 할당을 기다리지 않습니다. 첫 번째의 onComplete에서 호출 된 두 번째 함수가 있어야합니다.

0

시도 설정 :

trackid = 9999999;

대신

var trackid = 9999999;

var foo = 'baa'; < - 전용 변수 foo는 = 'BAA'< - 글로벌 변수

예 :

`print2 함수() { VAR foo는 = 'BAA'; }

print2(); 경고 (foo); `

'foo'가 인쇄되지 않음이 정의되지 않았습니다. ` function print2() { foo = 'baa'; }

print2(); 경고 (foo); ` 'baa'인쇄

+0

"VAR"은 선언 된 변수가 해당 범위를 결정하는 경우 변수를 비공개로 설정하지 않습니다. "var"를 제외한 모든 변수는 새로운 변수를 선언하는지 또는 기존 변수의 값을 변경하는지 여부를 구분할 수 없게 만듭니다. – Marlin

+0

'var trackid'가 전역 범위에서 실행된다는 것을 제외하면'trackid'를 전역 변수로 만듭니다. 'var'만으로 변수를 선언하면 함수 범위에서 지역 변수가됩니다. – outis

+0

추가 질문으로 내 질문을 업데이트했습니다. 도움을 주셔서 감사합니다. – user547794

관련 문제