Ok ... Jestem tylko amatorem, więc proszę mi wybaczyć ewentualne błędy w typowania ale to działa: Format używać do wywołania AJAX w elemencie <a>
jest:
<a href="javascript:" onclick="functionThatReallyCallsAjax()">
Tak że mam większą elastyczność (na wypadek, gdy muszę coś sprawdzić, zanim wyślę ajax).Teraz, dla wywołania AJAX trzeba:
- Co plik zadzwonić
- Co zrobić z odpowiedzią z pliku o nazwie
- Co zrobić, jeśli błąd I/O dzieje
Mamy więc tę funkcję - nie moją, skądś wyrzuconą pośród tysięcy - prawdopodobnie tutaj :) - i chyba dobrze znaną, przepraszam autora, on jest geniuszem: to jest to, co nazywacie rzeczą ajaxową, gdzie " url 'to plik, który chcesz "ajax", "sukces" to nazwa funkcji, która zajmuje się wynikami, a błąd jest nazwa funkcji, która zajmuje się błędami 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;
}
Będziesz naturalnie muszą zawierać sukcesu + błędach funkcje:
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");
}
a teraz, że jesteś uzbrojony, że to jest jak komponowanie prawdziwego połączenia wewnątrz funkcji, którą w nazwie <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);
}
Jeden scenariusz może być, gdy trzeba przekazać zmienną do PHP nie miałeś wcześniej. W tym przypadku, połączenie staną:
doAjaxThing("serverFile.php?parameter1=dogsRock",dealWithResponse,ohNo);
a teraz nie tylko masz PHP wysyłanie rzeczy do JS, masz JS PHP do wysyłania zbyt. Weeeee ...
Ostatnie słowa: ajax nie jest językiem, jest "sztuczką" javascript. Nie musisz w pełni rozumieć, co robi pierwsza funkcja "DoActiveThing", tylko upewnij się, że wywołujesz ją poprawnie. Automatycznie "wywoła" funkcję "deal WithResponse" po otrzymaniu odpowiedzi od serwera. Zauważ, że możesz kontynuować prowadzenie swojej działalności (asynchronicznie - proces nie jest związany czasowo) do momentu otrzymania odpowiedzi - czyli wtedy, gdy zostanie uruchomiona "transakcja WithResponse" - w przeciwieństwie do zatrzymywania i oczekiwania strony (synchronicznie - czas związany) do nadchodzi odpowiedź. To jest magia ajax (Asynchronous JAvascript i Xml).
W twoim przypadku chcesz dodać echo ("sukces") - lub błąd! - w PHP, aby funkcja "dealWithResponse" wiedziała, co robić w oparciu o te informacje.
To wszystko, co wiem o ajax. Mam nadzieję, że to pomoże :)
dodaj preventdefault na początku funkcji deletePost() – Phiter
'href = #' dodaj to i zablokuj domyślną funkcję wewnątrz onclick –