Hej Eksperter Er igang med, at lave en løsning hvor brugeren kan slette sine ting via. js og php. Dog er jeg stødt ind i det problem, som er: Når jeg skal trykke Delete vil den ikke reagerer med mit AJAX/Javascript
Her er min JS kode:
<script language="javascript"> function fnDeleteRecord(id) { new Ajax.Request('delete.php?action=Delete&id='+id,{method:'get'}); } </script>
<script language="javascript"> function fnDeleteRecord(id){ if(response("Er du sikker på at denne skal slettes?")){ window.location.href='delete.php?action=Delete&id='+id } </script>
<script language="javascript"> function fnDeleteRecord(id){ if(response("Er du sikker på at denne skal slettes?")) { if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } } if(xmlhttp) { xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState==4) { if(xmlhttp.responseText == "Lykkedes") { //Slet td/tr'en der lige er blevet slettet } } } xmlhttp.open("GET",'delete.php?action=Delete&id='+id,true); xmlhttp.send(null); } else { window.location.href='delete.php?action=Delete&id='+id; } </script>
-> #4 - ja hvis det skal køres uden en opdatering af siden, men så vil du stadig have muligheden for at slette den, selvom den er blevet slettet, medmindre der også bliver sørget for at fjerne den fra siden...
Begge to. Men det er som #4 skriver den. Det skal være så den ikke opdaterer siden, men indlægget skal så også slettes fra siden og ikke blive der til man opdaterer siden igen :)
... Hvis indlægget også skal slettes fra siden, skal du have fat i DOM elementet, som du så fjerner
Eks.: <script language="javascript"> function fnDeleteRecord(id) { new Ajax.Request('delete.php?action=Delete&id='+id,{method:'get', onSuccess: function(){ $('entry_' + id).remove(); }}); } </script> <div id="entry_17">....bla bla bla....</div> <a href='java script:void(0);' onclick=fnDeleteRecord('17'); >Delete</a>
Ovenstående kode er baseret på prototype.js
Synes godt om
Slettet bruger
18. juni 2009 - 15:05#11
#6 Det har jeg netop taget hånd med følgende: if(xmlhttp.responseText == "Lykkedes") { //Slet td/tr'en der lige er blevet slettet }
Der skal du indsætte javascript kode som sletter rækken på siden. Det smarteste vil nok være at give rækkerne samme id deres SQL-id, og så fjerne dem med et: getElementById(<?php echo "$row['id']"; ?>).innerHTML = "" eller lignende. Måske splazz kan komme med noget bedre kode?
Synes godt om
Slettet bruger
18. juni 2009 - 15:08#12
Hov, der kom en god sjat indlæg før jeg oprettede mit. Begyndte at skrive #11 lige efter #7.
Kan i ikke komme med eksempler på hvad i mener, er helt ny i js og skal bruge denne funktion til mit projekt. Så det ville være dejligt hvis i ville komme med nogle eksempler ;)
if(xmlhttp.readyState==4) { if(xmlhttp.responseText == "Lykkedes") { //Slet td/tr'en der lige er blevet slettet } }
til:
if(xmlhttp.readyState==4) { if(xmlhttp.responseText == "Lykkedes") { //Slet td/tr'en der lige er blevet slettet } alert("RESPONSE: "+xmlhttp.responseText); }
<?php require_once('config.php'); if ($_GET['action']) { switch($_GET['action']) { case 'Delete': $sql = "Delete from test where id ='".$_GET['id']."'"; $result = mysql_query($sql); if(!$result) echo "some problem occured during delete operation"; break; } } ?>
så hvis den fejler får du "some problem occured..." tilbage og hvis det lykkedes får du intet tilbage.
det du så skal er at slette den linje, hvis responseText er tom.
det burde kunne gøres således:
var objTr = document.getElementById(id); objTr.parentNode.removeChild(objTr);
ovenstående indsættes hvor du modtager svar fra php-filen:
if(xmlhttp.readyState==4) { if(xmlhttp.responseText == "") { //Slet td/tr'en der lige er blevet slettet var objTr = document.getElementById(id); objTr.parentNode.removeChild(objTr); } }
Synes godt om
Slettet bruger
18. juni 2009 - 22:13#20
Hov, lavede også en bummert i koden:
else (window.ActiveXObject)
skal ændres til
else
Fejlen skyldes at jeg plejer at bruge en kode som denne:
if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } else { alert("Din browser understytter ikke XMLHttp."); }
-> #21 - i stedet for bare at skrive: "den virker ikke" - så skriv hvad der sker og hvad der ikke sker!
kommer der en fejl eller hvad sker der?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.