Velocity - Wie vermeidet man ParseErrorException bei der Verwendung von jQuery?

8

Ich versuche, einen jQuery-Post zu einem JavaScript auf einer Webseite hinzuzufügen. Die gesamte Seite besteht aus mehreren Velocity-Vorlagen. Alles war gut, bis ich versucht habe, den jQuery-Post hinzuzufügen, jetzt bekomme ich:

%Vor%

Zeile 282 ist $.post(... und Spalte 24 scheint das erste Zeichen "," zu sein. Anfangs hatte ich den JSON in dieser Zeile, aber ich habe ihn nach oben verschoben (in die var myJSONObject ... -Zeile), da ich dachte, dass der Fehler mit ungültigem JSON zusammenhing (die Tabs am Anfang der Zeile gaben eine irreführende Spaltennummer).

%Vor%

Nebenaktualisierung

Ich habe die folgenden Zeilen geändert:

%Vor%

Die Parse-Ausnahme konzentriert sich immer noch auf das erste ", ". Ich nehme an, das Problem ist, dass Velocity denkt, dass es in der Lage sein sollte $ .post zu lösen - wenn es tatsächlich jQuery ist. Ich habe jQuery in anderen Velocity VM-Vorlagen ohne Probleme verwendet. Gibt es eine Möglichkeit, Velocity zu veranlassen, bestimmte Zeilen / Anweisungen beim Parsen zu ignorieren?

Update 2

Ich habe diesen Link gefunden, in dem es darum geht, Referenzen in Velocity zu entfernen, aber das Problem wird nicht gelöst mein Problem. Hinzufügen eines " \ " vor $.post gibt mir genau den gleichen Fehler, aber die Spalte ist eine zusätzliche, wegen des am Anfang der Zeile hinzugefügten Zeichens.

    
Mikaveli 26.07.2011, 10:01
quelle

5 Antworten

13

Sie können Ihr Javascript mit #[[ ... ]]# umschließen, was Velocity veranlasst, den eingeschlossenen Block nicht zu analysieren (neu in Velocity 1.7)

%Vor%     
serg 26.07.2011, 20:01
quelle
9

Ok, es scheint zwei Lösungen dafür zu geben:

Erstens können wir mit jQuery einfach vermeiden, den globalen Alias ​​$ zu verwenden und stattdessen das jQuery-Objekt direkt zu verwenden:

%Vor%

In meinem Fall funktioniert das oben genannte großartig. Aber ich vermute, in anderen Szenarien (nicht-jQuery) ist dies möglicherweise nicht möglich. In diesem Fall können wir unseren Charakter innerhalb einer gültigen Velocity-Referenz wie dieser "verstecken":

%Vor%

Quelle: Ссылка

Ich würde immer noch gerne wissen, warum die Backslash-Flucht nicht funktioniert hat, aber das Obige wird mich wenigstens wieder in Bewegung bringen. :)

    
Mikaveli 26.07.2011 11:08
quelle
1

Ich denke, das ist ein Bug in Version 1.6.x, weil es in 1.7 gut funktioniert (Wenn nicht, bitte sag es mir, ich teste es mehrmals ..), laut Referenz, die $ wird erst wirksam, wenn sie von a-zA-Z gefolgt wird. Ich möchte versuchen zu debuggen, was wirklich passiert ist, aber der Übersetzungscode wird vom Java CC Tool erzeugt, es ist zu schwer die Logik zu erkennen ...

    
zhb 09.08.2014 07:58
quelle
0

Sie müssen eine js-Datei mit Ihrem JavaScript-Code erstellen und importiere deine js-Datei in deinen vm-Code

    
giang.sys 23.12.2014 12:23
quelle
-1

Ich konnte es nicht mit irgendwelchen der anderen Korrekturen arbeiten lassen, wie "$" in der Geschwindigkeit unglücklicherweise zu entkommen. Ich habe es funktioniert, indem ich eine externe js-Datei mit jQuery geladen habe, anstatt jQuery direkt in velocity zu schreiben. Arbeitete für mich zumindest, hoffe, es hilft jemandem:)

/ björn

    
wonderbjorn 26.08.2014 11:05
quelle