2017-05-15 4 views
0

Ich versuche derzeit, jquery-Vorlagen zu füllen, die ich mit einem Ajax erhalten in einem anderen Ordner auf dem Server. Ich wollte die responseTexts füllen, die ich über .tmpl ({..}) bekomme. Leider hat das nicht funktioniert. Hier ist, was ich tue.Verwendung von jquery-tmpl auf responseText

var a = $.ajax({ 
    method: 'GET', 
    url : 'TemplateUrl/template.html' 
}); 
$.when(a).done(function(){ 
    $(a.responseText).tmpl({...}); 
}); 

Die response ist ein sehr einfaches Stück HTML-Code aus einer Sharepoint-Website wie diese

"<div> 
<td class="ms-formbody"> 
    <!-- FieldName="{{html FieldName}}" 
      FieldInternalName = "{{html FieldName}}" 
      FieldType = "SPFieldText" --> 
    {{html Text}} 
</td> 
</div>" 

suchen Beim Versuch, die Vorlage ich dieses

Uncaught TypeError: Failed to construct 'Text': Please use the 'new' operator, this DOM object constructor cannot be called as a function. 
erhalten zu füllen

Vielleicht euch haben eine Idee. Wäre großartig. Vielen Dank im Voraus und

Grüße Chris

Antwort

0

Ok die Antwort war nicht so hart und ziemlich logisch, sobald ich es hatte. Die Template-Engine benötigt den Script-Wrapper, um korrekt zu funktionieren. So muss das HTML so aussehen

<script type="text/x-jQuery-tmpl"> 
    <div> 
     <td class="ms-formbody"> 
      <!-- FieldName="{{html FieldName}}" 
        FieldInternalName = "{{html FieldName}}" 
        FieldType = "SPFieldText" --> 
      {{html Text}} 
     </td> 
     </div> 
</script> 
0

Der Grund ist es den Fehler wirft, weil Sie versuchen, Temp() als eine Funktion aufzurufen, anstatt es zu instanziieren.

Versuchen Sie es mit einem neuen Schlüsselwort vor $ (a.responseText) .tmpl ({...}).

+0

Danke für die schnelle Antwort. Probieren Sie auch die neue $ (a.responseText) .tmpl ({...}); Leider gibt es mir das gleiche Ergebnis. Auch zuerst tun var b = new $ (a.responseText); b.tmpl ({...}); funktioniert nicht – Chris

Verwandte Themen