2010-05-21 4 views
1
$.ajax({ url: "plugin.js", dataType: 'script', cache: true, success: function() { 
    alert('loaded'); 
}}); 

1) 잘못된 경로로 인해 스크립트를로드 할 수 없지만 올바른 경로를 어떻게 결정합니까? 위의 코드는 init.js에 있고 plugin.js도 같은 폴더에 있습니다.jQuery를 사용하여 스크립트로드

2) 동일한 요청으로 동시에 여러 플러그인을로드 할 수 있습니까? 예. plugin.js, anotherplugin.js? 당신의 도움이

답변

5

아약스가 아닌 getScript를 사용해야합니다. Ajax는 코드를 실행하는 것이 아니라 데이터를로드하기위한 것이다. 내가 제대로로드 있는지 확인하기 위해 방화범의 탭을 확인 할

var scripts = ['plugin.js', 'test.js']; 
for(var i = 0; i < scripts.length; i++) { 
    $.getScript(scripts[i], function() { 
    alert('script loaded'); 
    }); 
} 
+17

docs :'getScript'는'$ .ajax ({url : url, dataType : 'script', success : success});'의 줄임말이므로'.ajax'를 사용할 때 아무런 문제가 없습니다. 더 자세한. – Alconja

+3

비동기 캐싱에 특별히 .ajax를 사용하고 있습니다 (캐시 : true). – 3zzy

+0

그냥 getScript는 중요한 것을 캐시하지 않습니다 ... –

3

1) 경로가이 브라우저가 때를에있을 것입니다 URL이 이후가로드 년대 페이지 (다른 초기화 스크립트의 경로)를 기준으로 할 것이다위한

root 
| 
|_ html > page.html 
| 
|_ static > js > init.js, plugin.js 

감사합니다 ajax 요청을 실행합니다.

편집 : 모든 페이지를 가정 ((이 도메인의 루트에 배치됩니다 경우), 또는 ../static/js/plugin.js는 안전을 위해 하나 /static/js/plugin.js이다에서 편집을 기반으로 경로가 스크립트를로드 할 수 그것이 ' 로드 될 곳은 /html입니다.)

2) 아니요. 다른 파일에있는 경우 서로 다른 요청이 필요합니다. 당신은 서버 쪽에서 하나의 파일로 병합 할 수 있습니다 ...

+0

감사합니다. 구조를 표시하기 위해 desc를 편집했습니다. 경로를 찾을 수 있습니까? 감사! – 3zzy

+0

/static/js/plugin.js 및 /static/js/plugin.js 모두 시도했지만 여전히로드되지 않습니다. 교차 점검의 다른 방법? – 3zzy

+0

먼저 브라우저에서 직접 파일을로드하면 http : // /static/js/plugin.js에서 작동합니다. 파일이 예상대로 작동한다고 가정하면 [firebug] (http://getfirebug.com/)를 설치하고 Ajax 요청이 실행되면 Net 패널을보고 요청 된 실제 URL을보고 응답을 확인하십시오 ... – Alconja

0

스크립트를로드하고 현재 문서에 포함시키는 jQuery .getScript 함수를 확인하십시오.

1) 문서에 상대적인 경로는 /static/js/plugin.js이어야합니다.

2) 아니요. 각 파일은 단일 HTTP 요청으로로드됩니다.

+0

/static/js/plugin.js와 /static/js/plugin.js 모두 시도했지만 여전히로드되지 않습니다. 경로를 교차 점검하는 다른 방법은 없습니까? – 3zzy

+1

개발할 때 Firefox를 사용하십시오. 무료 인 Firebug (plugin)를 설치하십시오. 그 안에 모든 "디버그 패널"을 활성화하고 자바 스크립트를 중지해야하는 곳에 "중단 점"을 배치하십시오. 그런 다음 활성 변수에 마우스를 올려 놓고 현재 값을 읽을 수 있습니다. 아주 좋은! – BerggreenDK

0

및 경로가에서로드하려고 : 여러 파일을로드해야하는 경우

, 이런 일을하려고합니다.

경로는 JavaScript가 포함 된 문서의 경로입니다.

또한

var config = { basePath: '<?php echo BASE_PATH; ?>' }; 

는 그런 다음 업데이 트, jQuery를 1.9로이 작업을 수행 할 수있는 더 좋은 방법으로

var request = config.basePath + 'path/to/whatever.js'; 
1

을 할 수있는 (이 예에서는 PHP)를 구성 같은 개체를 유지한다.

$.when(
    $.getScript('url/lib.js'), 
    $.getScript('url/lib2.js') 
).done(function() { 
    console.log('done'); 
}) 

.done() 전화를 다음과 같은 X는 Deferreds-방법 (예 : $ .when)를 사용하는 것입니다 back 함수는 여러 유용한 매개 변수를 가지고 있습니다. http://api.jquery.com/jQuery.when/

0

당신은 기본 경로로 스크립트 경로를 설정 '../'를 사용할 수 있습니다

은 설명서를 참조하십시오.그런 다음 상대 경로를 추가하십시오.

$.getScript("../plugin.js").done(function(script, textStatus) { 
    alert("loaded:" + textStatus); 
}).fail(function(script, textStatus) { 
    alert("failed: " + textStatus); 
}); 
관련 문제