Hej! Hur ser den resulterande markupen ut? Vet inte om det här kommer att lösa problemet, men vid uppdatering av värde i "input"fält så används: ".value". Så här blir det: Hej! Jag tror det skulle funka bättre om du lyckas få det till Nu blir det så här och det fungerar fortfarande inte. Behöver jag göra några ändringar i funktionen också?Min AJAX-funktion hittar inte tillbaka
Jag har en lista som while:as ut mha php. I denna lista finns en input. När man lämnar den ska innehållet i den ändras i databasen.
Detta fungerar alldeles utmärkt. Men jag vill att det nya värdet ska visas i samma input. Scriptet hittar inte tillbaka.
Här är AJAX-koden
<script type="text/javascript">
//**Uppdatera flagga****************************************************************
function uppdatera_flagga(idf,f) {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest(); }
else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } // kod för IE6, IE5
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{ document.getElementById(f).innerHTML=xmlhttp.responseText;}
}
xmlhttp.open("GET","flagga_uppdatera.php?q="+idf,true);
xmlhttp.send();
}
</script>
Här är koden som ligger i en while.
echo'
<td class="td" width="16"><form action="*">
<input id="'.$f.'" onblur="uppdatera_flagga('.$rad["Kontaktnummer"].','.$f.')" value="'.$rad["Flagga"].' "></form>
</td>
';
$f blir Flagga1, Flagga2, Flagga3 osv. i whilen. Inputarnas id blir på detta viset unika.
Här är koden som uppdaterar databasen.
<?php
/*************** Kolla flaggan *****************/
require "config.php";
$flaggaQuery = mysql_query("SELECT Flagga
FROM tblkontakter
WHERE Kontaktnummer = '".$_GET['q']."'
") or exit (mysql_error());
while ($flagga = mysql_fetch_assoc($flaggaQuery)){
if ($flagga['Flagga'] == 1){
$flaggany = 0;
} elseif ($flagga['Flagga'] == 0){
$flaggany = 1;
}
/************************************************/
/**************** Ändra flaggan *****************/
$strQuery = mysql_query("
UPDATE tblkontakter SET
Flagga='".$flaggany."'
WHERE Kontaktnummer = '".$_GET['q']."'
")
or exit (mysql_error());
}
$flaggaQuery = mysql_query("SELECT Flagga
FROM tblkontakter
WHERE Kontaktnummer = '".$_GET['q']."'
") or exit (mysql_error());
while ($flagga = mysql_fetch_assoc($flaggaQuery)){
echo $flagga['Flagga'];
}
/************************************************************************/
?>
Sv: Min AJAX-funktion hittar inte tillbaka
Jag är klart rostig på php men tycker det ser ut som att du får nåt i stil med
<input id="'Flagga1'" onblur="uppdatera_flagga('42','Flagga1')" />
D.v.s. javascriptet söker efter något med id = Flagga1 medan elementet har id = 'Flagga1'
Sv: Min AJAX-funktion hittar inte tillbaka
Testa med att ersätta:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{ document.getElementById(f).innerHTML=xmlhttp.responseText;}
Med:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{ document.getElementById(f).value=xmlhttp.responseText;}
Sv:Min AJAX-funktion hittar inte tillbaka
<input id="flagga114" onblur="uppdatera_flagga(1378,flagga114)">
/Lars
Sv:Min AJAX-funktion hittar inte tillbaka
Jag har provat att använda value men det gör ingen skillnad.
Jag använder innerHTML i andra liknande sammanhang och det fungerar där.
/LarsSv: Min AJAX-funktion hittar inte tillbaka
<input id="flagga114" onblur="uppdatera_flagga(1378,'flagga114')">
Annars försöker du skicka variabeln flagga114 (som sannolikt är odefinierad) istället för strängen "flagga114", vilken du senare slussar in i getElementById()
Och ja, du vill nog använda .value istället för innerHTML
Skillnaden blir att du får
<input value="nyttvärde"/>
I stället för
<input>nyttvärde</input>
Det senare stöds inte i html eftersom input-elementet har en tom content-model
Sv:Min AJAX-funktion hittar inte tillbaka
<input id="flagga122" onblur="uppdatera_flagga(1370,'flagga122')">
/Lars
Jag missade att prova med value igen. När jag gjorde det fungerar det.
Tack för all hjälp!!!
/Lars