Dies ist im Wesentlichen, was AJAX ist für . Ihre Seite wird geladen und Sie fügen einem Element ein Ereignis hinzu. Wenn der Benutzer das Ereignis auslöst, beispielsweise durch Klicken auf etwas, verwendet Ihr Javascript das XMLHttpRequest-Objekt , um eine Anforderung an einen Server zu senden.
Nachdem der Server geantwortet hat (vermutlich mit Ausgabe), können Sie mit einer anderen Javascript-Funktion / einem anderen Javascript-Ereignis mit dieser Ausgabe arbeiten, indem Sie sie einfach wie jedes andere HTML-Element in die Seite einfügen.
Sie können dies "von Hand" mit einfachem Javascript tun oder Sie können jQuery verwenden. Abhängig von der Größe Ihres Projekts und der jeweiligen Situation kann es einfacher sein, nur einfaches Javascript zu verwenden.
Einfaches Javascript
In diesem sehr einfachen Beispiel senden wir eine Anfrage an, myAjax.phpwenn der Benutzer auf einen Link klickt. Der Server generiert einige Inhalte, in diesem Fall "Hallo Welt!". Wir werden mit der ID in das HTML-Element einfügenoutput .
Das Javascript
function getOutput() {
getRequest(
'myAjax.php',
drawOutput,
drawError
);
return false;
}
function drawError() {
var container = document.getElementById('output');
container.innerHTML = 'Bummer: there was an error!';
}
function drawOutput(responseText) {
var container = document.getElementById('output');
container.innerHTML = responseText;
}
function getRequest(url, success, error) {
var req = false;
try{
req = new XMLHttpRequest();
} catch (e){
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
if(req.readyState == 4) {
return req.status === 200 ?
success(req.responseText) : error(req.status);
}
}
req.open("GET", url, true);
req.send(null);
return req;
}
Der HTML
<a href="#" onclick="return getOutput();"> test </a>
<div id="output">waiting for action</div>
Das PHP
<?php
echo 'hello world!';
?>
Probieren Sie es aus: http://jsfiddle.net/GRMule/m8CTk/
Mit einer Javascript-Bibliothek (jQuery et al.)
Das ist wohl viel Javascript-Code. Sie können das verkürzen, indem Sie die Blöcke festziehen oder natürlich engere Logikoperatoren verwenden, aber dort ist noch viel los. Wenn Sie vorhaben, in Ihrem Projekt viel Ähnliches zu tun, ist eine Javascript-Bibliothek möglicherweise besser geeignet.
Wenn Sie dasselbe HTML und PHP von oben verwenden, ist dies Ihr gesamtes Skript (mit jQuery auf der Seite). Ich habe den Code ein wenig verschärft, um dem allgemeinen Stil von jQuery besser zu entsprechen, aber Sie haben die Idee:
function getOutput() {
$.ajax({
url:'myAjax.php',
complete: function (response) {
$('#output').html(response.responseText);
},
error: function () {
$('#output').html('Bummer: there was an error!');
}
});
return false;
}
Probieren Sie es aus: http://jsfiddle.net/GRMule/WQXXT/
Beeilen Sie sich noch nicht mit jQuery: Wenn Sie eine Bibliothek hinzufügen, werden Ihrem Projekt immer noch Hunderte oder Tausende von Codezeilen hinzugefügt, genauso sicher, als hätten Sie sie geschrieben. In der jQuery-Bibliotheksdatei finden Sie ähnlichen Code wie im ersten Beispiel sowie vieles mehr . Das kann eine gute Sache sein, es kann nicht. Planen und berücksichtigen Sie die aktuelle Größe und zukünftige Erweiterungsmöglichkeiten Ihres Projekts sowie die Zielumgebung oder -plattform.
Wenn dies alles ist, was Sie tun müssen, schreiben Sie das einfache Javascript einmal und Sie sind fertig.
Dokumentation