2011-11-06 2 views
4

I로드 템플릿 icanhaz.js과 콧수염을 사용하고, 나는 다음과 같은 방법을 사용하여 필요에 수염 템플릿을로드하고 대신 문서 객체를 반환 그러나 디버거에서 반환되는 변수는 가끔이 내가 사용할 수있는 원시 문자열이 아닌 Document 객체로 반환됩니다. 템플릿 파일의 html에 파일의 맨 위에 중첩 된 DOM 요소가 없으면 원하는대로 템플릿이로드되기 때문에 가끔씩 말합니다. 이것은 매우 이상한 행동으로 내가 설명하는 도움을 좋아할 것입니다.로드 콧수염 템플릿은 원시 문자열

따라서, 예를 들어, 템플릿 파일을로드 할 때

<div> 
    <div>My name is {{name}}</div> 
</div> 

는 문서 객체로 반환받을 것이다. 반면

,이 템플릿 파일 : 원시 문자열로 필요에 따라

<div></div> 
<div> 
    <div>My name is {{name}}</div> 
</div> 

가 반환됩니다.

아이없이 최상위 div를 사용하면 문서 대 문자열로 식별되는 템플릿이 달라질 수 있습니다. 어떤 아이디어?

답변

2

인수를 $.get()에 제공하지 않으므로 "지능형 추측"모드에서 실행 중입니다. related documentation는 말한다 :

아무것도 지정되어 있지 않은 경우, JQuery와에, 자바 스크립트 객체를 얻을 것입니다 1.4 JSON 에, 그것은 (AN XML MIME 타입은 XML을 얻을 것입니다 응답의 MIME 유형에 따라 추론하려고합니다 1.4 script은 스크립트를 실행하고 이며 다른 것은 문자열로 반환됩니다.

그래서, 서버가 text/xmltext/html (또는 text/plain)와 같은 템플릿의 일부와 다른 사람을 보낼 수 있습니다. 그것이 사실 인지를 확인하기 위해 응답 헤더 (Fiddler 또는 이와 동등한 도구 사용)를 조사하는 것이 흥미로울 것입니다.

jQuery.get("/js/templates/" + name + ".mustache", function(data) { 
    window.ich.addTemplate(name + "_template", data); 
    callback(); 
}, "html");  // Always return HTML as plain text. 
: 요청의 데이터 유형을 지정하는 옆으로

은 모두 문제를 제거한다