2013-02-24 6 views
1

여기에 비동기 자바 스크립트의 코드 조각입니다 : 비동기 자바 스크립트 - 매개 변수 전달 방법

var bsa = document.createElement('script'); 
bsa.type = 'text/javascript'; 
bsa.async = true; 
bsa.src = 'myfile.js'; 
bsa.test_var = 'HI!'; 
(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa); 

나는 줄 bsa.test_var = 'HI!'; 추가 - 나는 myfile.js에 매개 변수를 전달하고 'test_var'에서이 인쇄하려고했지만, 그것은 작동하지 않습니다.

myfile.js에는 alert(bsa.test_var) 또는 alert(test_var)으로 전화를 걸려고했지만 어느 버전도 작동하지 않았습니다.

매개 변수를 전달할 방법이 있습니까? 매개 변수를 데이터베이스에서 적절한 데이터로드 매개 변수에 따라 myfile.js에 전달하고 싶습니다.

감사합니다.

+0

'bsa.src ='myfile.js? key1 = val & key2 = val''이 가능합니까? –

+0

나는 async가 그 코드에서 아무 것도하지 않는다고 확신한다. – mplungjan

+0

당신의보기가 저를 위해 작동합니다. 경고 (bsa.test_var)는 무엇을 표시합니까? –

답변

2

매개 변수를 스크립트에 전달하지 않고 함수에 매개 변수를 전달합니다.

인 함수가 호출 될 때까지 스크립트를 변경하여 그 시점에서 매개 변수를 전달해야합니다.

그런 다음 문제는 스크립트가로드를 완료 한 시점을 알아내는 것 중 하나가됩니다. 이는 .onload 처리기를 <script> 요소 개체에 추가하여 수행 할 수 있습니다.

+0

스크립트에 매개 변수를 전달할 수 있습니다. 매개 변수는 의도 한 것이 아니지만 수행 할 수 있습니다. http://papermashup.com/read-url-get-variables-withjavascript/ –

+0

@AInitak, 그 방법에 대한 예제/링크를 제공해 주시겠습니까? – user984621

+0

@NicholasPickering 예, 그는 원격 서버에 CGI 스타일 매개 변수를 전달하여 해당 값을 기반으로 JS 소스를 변경하려고 할 수도 있습니다. 그래도 할 수있는 일은 거의 없습니다. – Alnitak

0

불행히도 스크립트에 매개 변수를 전달할 수 없습니다.

RequireJS을 사용하여 스크립트를로드 할 수 있습니다. 스크립트가로드되면 사용자 정의 매개 변수를 사용하여 초기화를 수행 할 수있는 시점에 알림을받습니다. AMD 모듈을 사용할 필요는 없지만 그렇게하면 코드가 더 잘 구성됩니다.

require('myfile.js', function (MyModule) { 
    var myModule = new MyModule(customParameter); 
}); 
관련 문제