Im ein xmlhttp.send()
mit einem Abfrageergebnis zu erhalten, die eine HTML hierarquical Liste (li am lu-Tags) in PHP (jstree_view.php) drucken.Run Javascript-Funktion nach innerHTML- von PHP
Danach verwende ich document.getElementById("treeviewer").innerHTML = this.responseText;
, um das erhaltene Ergebnis von PHP zu injizieren, um dem Benutzer die Informationen anzuzeigen.
Ich bemerkte, dass eine JavaScript-Funktion nicht jstree zeigen funktioniert, nachdem der Code injiziert wird, außerdem die jstree Funktion vor innerHTML-
Die Frage ist, läuft ausführen, wie man das Problem lösen kann? Vielleicht rufe ich das Javascript nicht richtig auf, was ist der richtige Weg, die Funktion aufzurufen? Ich habe getestet, ein Skript-Element mit der Javascript-Funktion (Warnfunktion funktioniert gut), auch ich eval() als einige Antworten mit guten Ergebnissen empfohlen.
jstree_charge.js
function jstree_charge(tech) {
var index_project_database= document.getElementById("project_select").selectedIndex;
var project_database= document.getElementById("project_select").options[index_project_database].value;
if (tech == "") {
document.getElementById("treeviewer").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("treeviewer").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","../php/jstree_charge.php?tech=" + tech + "&project=" + project_database, true);
xmlhttp.send();
} }
Ergebnis jstree_charge.php Dies ist das Ergebnis, das durch innnerHTML in jstree_charge.js
<div name="treeviewer" id="treeviewer">
<ul>
<li>RNC5
<ul>
<li>00AB2_U
<ul>
<li>P00AB2A</li>
<li>P00AB2B</li>
<li>P00AB2C</li>
<li>P00AB2D</li>
<li>P00AB2E</li>
</ul>
</li>
<li>00ABC
<ul>
<li>U00ABCA</li>
<li>U00ABCB</li>
<li>U00ABCC</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
jstree_charge.js
injiziert wird,$(document).ready(function(){
$("#treeviewer").jstree({
"checkbox" : {
"keep_selected_style" : false
},
"plugins" : [ "checkbox" ]
});
});
Danke!
zwei offensichtliche Probleme: 1) Sie injizieren ein zweites Element mit ID "Treeviewer" innerhalb des bestehenden Elements mit ID "Treeviewer". IDs müssen eindeutig sein. 2) Unter der Annahme, dass die js-Funktion, auf die Sie sich beziehen, die in jstree_charge.js ist, wird diese Funktion nur einmal ausgeführt, wenn die Seite geladen wird (das ist es, was der document.ready() - Wrapper tut). Sie müssen die Funktion jstree erneut ausführen, nachdem Sie den neuen Inhalt heruntergeladen haben, andernfalls ist der neue Inhalt nicht bekannt. – ADyson
Sie haben Recht! 1.-die Zeile: document.getElementById ("treeviewer"). InnerHTML = this.responseText; Identifizieren Sie den Ort, wo es injiziert wird, deshalb verweise ich das ID-Tag. Daher wird der Code korrekt in das angegebene Tag eingefügt. 2.- Das Skript wird ausgeführt, nachdem die Seite geladen wurde und deshalb wird die js-Datei nicht geladen. Wie starte ich die jstree-Funktion nach einem Download des Inhalts? – Beaver