Ok ... Sono solo un hobbista, quindi per favore mi perdoni eventuali imprecisioni nella digitazione, ma questo funziona: Un formato che uso per una chiamata AJAX in un elemento <a>
è:
<a href="javascript:" onclick="functionThatReallyCallsAjax()">
Così che ho più flessibilità (nel caso in cui ho bisogno di controllare qualcosa prima di inviare l'ajax).Ora, per una chiamata AJAX è necessario:
- Che lima per chiamare
- cosa fare con la risposta dal file chiamato
- Cosa fare se un errore di I/O accade
Quindi abbiamo questa funzione - non mia, sanguisuga tra migliaia da qualche parte - probabilmente qui :) - e probabilmente ben nota, le mie scuse all'autore, lui è un genio: questo è ciò che chiami per la cosa ajax, dove " url 'è il file che vuoi' ajax ',' success 'è il nome della funzione che riguarda i risultati e l'errore è il nome della funzione che gestisce gli errori IO.
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;
}
sarà naturalmente necessario includere il successo + errore funzioni:
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");
}
E ora che sei armato con questo, questo è il modo di comporre la vera chiamata all'interno della funzione hai chiamato a il <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);
}
uno scenario potrebbe essere quando è necessario passare una variabile per il PHP non è stato fatto prima. In questo caso, la chiamata sarebbe diventato:
doAjaxThing("serverFile.php?parameter1=dogsRock",dealWithResponse,ohNo);
E ora non solo è stato l'invio di PHP roba da JS, devi JS invio a PHP troppo. Weeeee ...
Parole finali: ajax non è un linguaggio, è un "trucco" javascript. Non è necessario comprendere appieno come funziona la prima funzione "doAjaxThing", ma assicurati di chiamarla correttamente. Automaticamente chiamerà la funzione 'deal WithResponse' una volta arrivata la risposta dal server. Si noti che è possibile continuare a svolgere la propria attività (processo asincrono - non legato al tempo) fino all'arrivo della risposta - ovvero quando viene attivato l''affare WithResponse', anziché avere una pagina ferma e attendere (sincrono - tempo legato) fino a quando arriva una risposta. Questa è la magia di ajax (Asincrono JAvascript e Xml).
Nel tuo caso si desidera aggiungere l'eco ("successo") - o errore! - nel PHP, in modo che la funzione 'dealWithResponse' sappia cosa fare in base a tali informazioni.
Questo è tutto ciò che so su ajax. Spero che questo aiuti :)
aggiungere un preventdefault all'inizio della funzione deletePost() – Phiter
'href = #' aggiungi questo e prevedi il valore predefinito all'interno della funzione onclick –