javascript XMLHttpRequest-Objekt öffnen, php-Datei und führen Sie mehrere javascript
Ich habe einen Haupt-Seite, nennen Sie es Main.php. Auf dieser Seite ist eine Schaltfläche, wenn darauf geklickt wird, setzt DIVS innerHTML (schon auf Main.php genannt divResults) mit den Ergebnissen aus Results.php.
Wenn Results.php aufgerufen wird, der zurückgegebene HTML - "Diese Sind Die Ergebnisse", ist richtig empfangen und festlegen, wie der Inhalt zu divResults auf Main.php. Jedoch, beliebigen javascript-Code aus Results.php ist nicht ausgeführt. Als Beispiel habe ich versucht zu tun, ein einfaches Fenster.alert. Hier ist der Beispiel-code:
Main.php link-Taste startet die Aktion:
<img src="$MyImageSource" onclick=\"ExpandDropdownDiv()\" />
Main.php javascript-Funktion ExpandDropdownDiv():
function ExpandDropdownDiv(){
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 (xmlhttp.readyState==4)/* && xmlhttp.status==200) */
{
document.getElementById("divResults").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Results.php",true);
xmlhttp.send();
}
Results.php code-Beispiel:
<script type="text/javascript">
alert("Success");
</script>
These Are The Results
------------------ Edit - Update ------------------
Die einfache Warnung, aus Results.php ist nur ein Beispiel. Wenn ich in der Lage, diese zu arbeiten, ich glaube, ich könnte lösen, der rest von meinem problem, auf meiner eigenen. Jedoch, ich bemerkte ein paar Kommentare, die darauf hindeutet, mal eben die Warnung im Main.php's javascript-Code nach dem ich die DIVS innerHTML. Also, lassen Sie mich erklären, was ich wirklich will, zu tun mit dem javascript-Code, nach dem div gesetzt ist.
Bild 1, zeigt einige normale "Wählen Sie" html-Elemente umgewandelt wurden mit Hilfe von jquery und der dropdown-check-list-Erweiterung (.js). Wenn der Benutzer klickt auf den bunten Pfeil nach unten am unteren Rand der div sich erweitert, (Bild 2) und zwei oder mehr "Select" - Elementen generiert werden, die innerhalb dieses anderen .php-Datei... der html-Code wird zurückgegeben, und in den div. So, ich muss nicht Neuladen der gesamten Seite und können die neue select-dropdowns einfach unter die bereits vorhandenen.
Das problem ist, zu "transformieren" diesen normalen Elemente auswählen, gibt es einige javascript, das ausgeführt werden muss, die gegen diesen HTML:
$(document).ready(function() {
$(".MultiSelect").dropdownchecklist( {firstItemChecksAll: true, maxDropHeight: 300 , searchTextbox: true, width: 100, textFormatFunction: function(options) {
var selectedOptions = options.filter(":selected");
var countOfSelected = selectedOptions.size();
var size = options.size();
switch(countOfSelected) {
case 0: return "All";
case 1: return selectedOptions.text();
/* case size: return "All"; */
default: return countOfSelected + " selected";
}
}
}
);
}
So, irgendwie muss ich in der Lage sein, um javascript auszuführen, die gegen die HTML-Code, der generiert wird aus dieser anderen .php-Datei. Und den Aufruf einfach den oben genannten code, nach meiner divs innerHTML gefüllt ist, nur re-generiert die bereits vorhandenen dropdowns, nicht die zwei neuen.
Beispiel Bilder
- warum nicht einfach die alert ('Erfolg'); innen ajax-callback?
- können Sie mir ein Beispiel nennen, ich werde versuchen? habe ich kaum in diesem code zu arbeiten und nicht einmal vollständig verstehen.
- Der einfachste Weg zu gehen über es Adam ist nicht einbetten der javascript innerhalb PHP, sondern führen Sie die JavaScript-nachdem Sie injizieren das php-Ergebnis in der ajax-callback-Funktion.
- wenn u wollen einfach nur, um es zu bekommen und läuft einfach nur Aussehen bei der Einfache Teil unter meiner Antwort
- Ihre Antwort war SEHR leicht zu Lesen und zu verstehen, dafür danke ich Ihnen sehr! ich habe versucht, Ihr Beispiel ist zwar, und noch immer kam der Fehler, das Ergebnis war undfined... =[
- ich glaube, ich verstehe, was Sie versuchen zu erreichen. was würde ich tun, persönlich, ist das php ermittelt werden Hersteller-und Klasse Informationen, und sobald ajax callsback, erstellen die textarea und Label-Elemente, injizieren retrived-Daten für Lieferant und Klasse in Ihnen, und Spritzen es in die DOM. all dies würde erfolgen auf client-Seite, nachdem
document.getElementById("divResults").innerHTML=xmlhttp.responseText;
. - versucht zu Lesen & verstehen, was DOM-manipulation/ - injection ist und wie es durchgeführt wird. aber mit dem, was Sie sagte, ich denke, ich kann es schaffen... ich denke auch, vielleicht könnte ich erstellen des dropdowns, sondern nur noch die div display:none... sobald ich die Daten für die dropdowns / Elemente auswählen, füllen Sie Sie mit den zurückgegebenen Daten, und legen Sie das div sichtbar sein. Eine Frage aber, ist das innerHTML=xmlhttp.responseText, wenn der Ajax - "Ruft zurück"? oder ist das eine andere Zeile? Ich appreicate die helfen, kjy, ich danke Ihnen so sehr!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist gut zu Lesen, zu verstehen was Sie tun: Eval einbetten JavaScript Ajax: YUI-Stil
, Wodurch der code funktioniert mit der Verwendung von eval (), aber seine nicht empfehlen, aus verschiedenen Gründen:
Nehmen wir Ihre php-und ändern Sie diese wie folgt:
- und Dies ist die callback-Funktion callback von AJAX. Ergebnis(); wird nicht ausgeführt, weil es nicht bewertet, und somit nicht vorhanden. das ist in Ihrem Fall
in Reihenfolge für den browser zu erkennen, die
result();
Sie tun müssen, eineval();
auf alle JavaScript-Anweisungen mit in die script-tags, die Sie injiziert in das div mitid divResults
:Einfach:
Der einfachste Weg, ich würde es tun, ist im Grunde entfernen Sie die JavaScript aus php und anzeigen der Inhalte, und nach Rückruf nur den rest des JavaScript innerhalb der callback-Funktion
php:
JavaScript:
versuchen Sie, wickeln Sie den javascript-code aus Result.php in eine Funktion und rufen Sie Sie nach dem einfügen wie :
und
Ihre results.php muss so etwas wie...
Und rufen Sie dann die Ergebnisse Funktion.