2012-07-14 3 views
1

내 프로젝트에 다음과 같은 code이 있는데 아주 재미있게 AJAX를 업로드하는 데 도움이됩니다.이 jQuery 변수에 어떻게 액세스합니까?

<script> 
    $(function(){ 
     var uploader = new qq.FileUploader({ 
      action: "{% url ... %}", 
      element: $('#file-uploader')[0], 
      multiple: true, 
      onComplete: function(id, fileName, responseJSON) { 
       if(responseJSON.success) { 
        alert("success!"); 
       } else { 
        alert("upload failed!"); 
       } 
      }, 
      onAllComplete: function(uploads) { 
       // uploads is an array of maps 
       // the maps look like this: {file: FileObject, response: JSONServerResponse} 
       alert("All complete!"); 
      }, 
      params: { 
       'csrf_token': '{{ csrf_token }}', 
       'csrf_name': 'csrfmiddlewaretoken', 
       'csrf_xname': 'X-CSRFToken', 
       'iID': '{{ itemID }}', 
       'received': $('letter_received').val(), 
       'is_company': $('letter_is_company').val(), 
      }, 
     }); 
    }); 
</script> 

유일한 문제는 추가 GET 값을 서버에 전달하고 싶습니다. 위의 시도했지만 페이지가 열릴 때 스크립트가 실행될 때 값이 변경 될 때 아닙니다. 아래 저자의 PARAMS 추가 보내기 '위의 링크에서 다음 코드를 사용하여 런타임에 추가 값을 추가 할 것을 권장합니다 :

uploader.setParams({ 
    anotherParam: 'value' 
}); 

난 그냥 내가 uploader 변수를 액세스 할 수있는 방법을 모르겠어요. 예를 들어 다음을 보자

<button onclick="update_uploader(1,0)"> 
... 
<script> 
    function update_uploader(received,is_company) { 
     uploader.setParams({ 
      received: received, 
      is_company: is_company 
     }); 
    } 
</script> 

나는 때문에 범위 문제로 uploader에 액세스 할 수 없습니다. 당신이 외부에서이 변수에 액세스하려면 [그래 내가 시도 $(function(){uploader 외부를 선언하지만 업 로더 :(나누기]

어떤 아이디어?

+0

"외부로 업 로더 선언"이란 무엇을 의미합니까? 그리고 어떻게 깨지나요? –

답변

1

변경 var uploaderuploader합니다. 이것은 만들 것이다 변수 전역 변수

+0

고맙습니다, 당신 말이 맞아요. (도장과 jquery 사이를 가볍게 치지 않으면 혼란스러워집니다.) – Sevenearths

0

업 로더를 코드에서이 지역 변수입니다 . 드 기능() 문제를 해결하기 위해 당신이 전역 변수로 updloader 선언해야합니다 (그러나 이것은 권 해드립니다 거의 절대하지만, 여기에 범위를 벗어난 참은) 단지 변경 :

var uploader = new qq.FileUploader({ 
     action: "{% url ... %}", 
     .... 
}); 

window.uploader = new qq.FileUploader({ 
     action: "{% url ... %}", 
     .... 
}); 

그런 다음 업 로더는 페이지에서 전 세계적으로 사용할 수 있습니다. 당신은의 jQuery $ 내에서이 코드를 삽입 할 필요가 없습니다

+1

해당 요소가 사용 가능할 때만 작동합니다. 변수는 전역 일 수 있지만 DOM 준비가 완료된 후에도 초기화 될 수 있습니다 .. –

0

(함수() {블록. 작동합니다 코드의 첫 번째 줄과 마지막 줄을 제거.

관련 문제