Mittlere Entwicklung Ich entschied mich für eine bessere Kontrolle auf das serverseitige Rendering zu wechseln amongst other benefits. Meine Web-Anwendung ist vollständig AJAX basiert, keine URL-Umleitung, so dass die Idee hier ist eine Website, die sich selbstWas ist der richtige Weg, um JavaScript-Code mit gerenderten HTTP an einen Client zu senden?
Ich konnte einfach nicht herausfinden, die richtige Art und Weise zu senden Javascript Ereignisse/Funktionen zusammen mit dem HTML-String, oder Sollte das notwendige Javascript immer in den statischen Dateien vorinstalliert sein?
Sagen wir mal Client eine klickt ‚offenen Tisch‘ vorgerenderter Taste
Der Server eine Abfrage machen, die HTML-Tabelle erstellen und senden es zurück, aber diese Tabelle muss auch JavaScript-Trigger und Funktionen richtig arbeiten, Wie werden diese gesendet, empfangen und ausgeführt?
Es gibt ein paar Artikel, die erwähnen, eval() nicht in Javascript zu verwenden, gibt es einen Weg um dies zu umgehen? Ich will nicht unnötig Ereignisse für Elemente vorzuladen haben, die noch nicht
Der Server vorhanden ist Python und der Kunde ist Javascript/JQuery
Theoretische Beispiel:
Kundenstamm Javascript:
$("body").on("click", "#open_table", function() {
$.getJSON('/get_table', function(response){
$("#table_div").append(response.html);
eval(response.javascript()); //??
}
});
Python Server (views.py):
def get_table(request):
data = {}
#String containing rendered html
data['html'] = get_render_table()
#String containing Javascript code?
data['javascript'] = TABLE_EVENTS_JAVASCRIPT
return HttpResponse(json.dumps(data),content_type='json')
meine Frage Bemerkenswert stammt aus einer experimentellen/Perspektive Lernen
Warum benötigt die Antwort unterschiedliche Auslöser von der ursprünglichen Seite? Normalerweise würden Sie Trigger für Elemente nach Klasse festlegen, und das neue HTML würde Elemente mit diesen Klassen enthalten, um die Trigger automatisch aufzunehmen. –
@DanielRoseman Meistens experimentell, in meinen Gedanken, warum sollte ich ein Ereignis für etwas laden, das (noch) nicht existiert und vielleicht nicht existiert? Das wird problematisch, wenn Ihre Website nur eine Seite ist. – Mojimi
Wie ich verstehe, eval() ist vielleicht keine gute Idee, weil: 1) es ist relativ langsam, 2) es ist potenziell gefährlich. Aber wenn das JS, das vom Server kommt, nur einfache Trigger ist und immer von einer sicheren Quelle kommt, scheint es nicht falsch zu sein. –