2010-06-23 4 views
2

jQuery를 시작하면서 간단하게 .load()를 사용하여 기본 페이지에 외부 HTML를 삽입하는 등의 일을 당황스럽게하는 데 문제가 있습니다.jQuery load() 메서드의 문제

여기에 메인 페이지의 :

<html> 
    <head> 
    <script src="js/jquery-latest.min.js" type="text/javascript" charset="utf-8"></script> 
    <script type="text/javascript" charset="utf-8"> 
     $(document).ready(function(){ 
      $(".log").ajaxError(function() { 
       $(this).text('Ajax error.'); 
      }); 

      $('.result').load('external.html', function() { 
       $('.log').text('Loaded.') 
      }); 
     }); 
    </script> 
    </head> 
    <body> 
     <div class="log"> 
     </div> 
     <div class="result"> 
     </div> 
    </body> 
</html> 

그리고 여기 external.html입니다 ".로드 '브라우저에서이 페이지를 열 때

<p>Some external content!</p> 

가, .log div에 삽입되지만 외부 HTML은 .result div에 삽입되지 않습니다. 또한 external.html을 삭제하거나 파일의 이름을 변경하더라도 "로드 됨"이라고 표시됩니다. 파일을 찾을 수 없으면 Ajax 오류가 발생하지 않아야합니다. .load()가 데이터를 가져 오는 것 같지 않습니다.

편집 : chrissr의 제안을 바탕으로, 나는 코드 변경 : "모든 것이 잘 작동"이 프로그램을 실행할 때

$(".result").load("external.html", function(response, status, xhr) { 
    if (status == "error") { 
    var msg = "Sorry but there was an error: "; 
    $(".log").html(msg + xhr.status + " " + xhr.statusText); 
    } else { 
    var msg = "Everything worked fine!"; 
    $(".log").html(msg); 
} 
}); 

, 그것은 삽입을 .log div에.

편집 2 : Firefox에서 시험해보기 만하면됩니다. (전 크롬을 사용하고있었습니다). jQuery가 Chrome에서 작동한다고 생각했습니다.

편집 3 : 문제가 해결되었습니다. 파일을 로컬에서 여는 중입니다 (file : //처럼). 나는 이것이 보안 문제 또는 뭔가를 일으키는 것 같아요. 어쨌든, 지금 크롬에서 테스트를 원한다면 먼저 웹 서버에 던져야한다는 것을 알았습니다.

+0

FireFox FireBug 확장 프로그램을 사용하여 작성중인 ajax 요청을 검사하십시오. 이렇게하면 요청이 발생하면 요청을 표시하고 요청 인수와 헤더 및 응답 본문과 헤더를 표시합니다. 이렇게하면 잘못 될 곳을 강조 표시합니다. –

답변

0

문제가 해결되었습니다. 파일을 로컬에서 여는 중입니다 (file : //처럼). 나는 이것이 보안 문제 또는 뭔가를 일으키는 것 같아요. 어쨌든, 지금 크롬에서 테스트를 원한다면 먼저 웹 서버에 던져야한다는 것을 알았습니다.

2

external.html이이 페이지와 같은 디렉토리에 있습니까?

+0

예, 동일한 디렉토리에 있습니다. –

3

성공 또는 실패 여부에 관계없이 .load() 콜백이 실행됩니다. 로드 작업이 완료되었음을 나타냅니다 (성공적 또는 비 성공적). 세부 사항을 얻기 위해이 같은

시도 뭔가 :

$(".result").load("external.html", function(response, status, xhr) { 
    if (status == "error") { 
    var msg = "Sorry but there was an error: "; 
    $(".log").html(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 

난 당신이 same origin policy 또는 경로가 external.html하는 것을 문제로 실행중인 같은데요 올바르지 않습니다.

+0

아, 그게 왜 "Loaded!" 그러나 코드를 복사하여 붙여 넣었으므로 오류 메시지가 표시되지 않았습니다. 그런 다음 else 문을 추가하고 else 문에 코드를 실행하여 오류가 없다는 것을 다시 암시합니다! –

0

HTML 파일을 복사하고 내 로컬 jQuery-1.4.1.min.js 파일을 참조했으며 정상적으로 작동했습니다. Adam이 말했듯이 스크립트 소스 경로와 external.html 경로가 올바른지 확인해야합니다.

+0

두 경로가 모두 올바른 경로입니다. 다른 jQuery 물건이 작동하므로 올바른 경로를 알 수 있습니다. external.html은 main.html과 같은 디렉토리에 있습니다. –