Ok ... Ich bin nur ein Bastler, so verzeihen Sie mir bitte etwaige Ungenauigkeiten in der Eingabe, aber dies funktioniert: Ein Format, das ich für einen Ajax-Aufruf in einem <a>
Elemente ist:
<a href="javascript:" onclick="functionThatReallyCallsAjax()">
So dass ich mehr Flexibilität habe (falls ich etwas überprüfen muss, bevor ich den Ajax sende).Nun, für einen Ajax-Aufruf benötigen Sie:
- Welche Datei
zu nennen
- Was mit der Antwort aus der Datei zu tun genannt Sie
- Was tun, wenn ein E/A-Fehler
geschieht
So haben wir diese Funktion - nicht meins, unter tausenden von irgendwohin gebadet - wahrscheinlich hier :) - und wahrscheinlich gut bekannt, meine Entschuldigung an den Autor, er ist ein Genie: Das ist, was Sie für die Ajax-Sache, wo ' url 'ist die Datei, die Sie' ajax 'wollen,' success 'ist der Name der Funktion, die mit Ergebnissen arbeitet und der Fehler ist der Name der Funktion, die IO-Fehler behandelt.
function doAjaxThing(url, success, error) {
var req = false;
try{
// most browsers
req = new XMLHttpRequest();
} catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
// try an older version
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;
}
Sie werden natürlich die Erfolg + Fehlerfunktionen umfassen müssen:
function dealWithResponse(textFromURL)
{
//textFromURL is whatever, say, a PHP you called in the URL would 'echo'
}
function ohNo()
{
//stuff like URL not found, etc.
alert("I/O error");
}
Und jetzt, wo du damit bewaffnet bist, das ist, wie Sie den eigentlichen Anruf innerhalb der Funktion Du genannt komponieren die <a>
:
function functionThatReallyCallsAjax()
{
//there are probably many scenarios but by having this extra function,
//you can perform any processing you might need before the call
doAjaxThing("serverFile.php",dealWithResponse,ohNo);
}
ein Szenario könnte sein, wenn Sie eine Variable mit der PHP übergeben müssen Sie vorher nicht hatten. In diesem Fall würde der Aufruf:
doAjaxThing("serverFile.php?parameter1=dogsRock",dealWithResponse,ohNo);
Und Sie jetzt nicht nur haben Sachen zu JS PHP senden, haben Sie JS PHP Senden zu. Weeeee ...
Schlusswort: Ajax ist keine Sprache, es ist ein Javascript "Trick". Sie müssen nicht vollständig verstehen, was die erste "doAjaxThing" -Funktion tut, um dies zu verwenden, stellen Sie einfach sicher, dass Sie es richtig aufrufen. Sobald die Antwort vom Server eintrifft, wird die Funktion 'Deal WithResponse' automatisch 'angerufen'. Beachten Sie, dass Sie weiterhin Ihr Geschäft betreiben können (asynchron - Prozess nicht zeitgebunden), bis die Antwort ankommt - dann wird die "Deal WithResponse" ausgelöst - im Gegensatz zu einer Seite stoppen und warten (synchron - Zeit gebunden) bis Eine Antwort kommt an. Das ist die Magie von Ajax (Asynchronous JAVascript und Xml).
In Ihrem Fall möchten Sie das Echo ("Erfolg") hinzufügen - oder Fehler! - in PHP, damit die Funktion 'dealWithResponse' aufgrund dieser Information weiß was zu tun ist.
Das ist alles, was ich über Ajax weiß. Hoffe, das hilft :)
fügen Sie einen preventdefault am Anfang der deletePost() -Funktion – Phiter
'href = #' fügen Sie dies und verhindern Standard-onclick-Funktion –