webForumDet fria alternativet

AJAX, PHP, MYSQL

2 svar · 554 visningar · startad av abh55p

abh55pMedlem sedan okt. 20092 inlägg
#1

Hej!

Har några frågor angående AJAX och mysql.

Jag har en kod och getElementById är null säger "IE" och får fel på sidan?

IE laddar in AJAX resultatet efter angivet refresh tid. Den skriver alltså inte ut någonting som "Laddar..." ? innan den har refreshat en gång? FF osv laddar direkt.

Sen vill jag skriva ut resten av kolumnerna i databasen i tabellen som genereras fram via php och mysql. Nu skrivs det bara ut i den första tr som skrivs ut?

Jag har provat att slänga in olika variabler med minDivTag.

2.php:

<?
require("db.php");

$open = mysql_connect ("$host", "$u","$p");
$sql = "SELECT * FROM artiklar ORDER BY id DESC LIMIT 1";
$result = mysql_db_query("$db","$sql");
while($post=mysql_fetch_array($result)){
 echo "Aktuellt pris: " . $post['pris'] . " :-";
}
?>

sida.php:

<?
mysql_connect("$host","$u","$p");
mysql_select_db("$db");

    $sql_query = mysql_query("SELECT * FROM artiklar WHERE typ='1' ORDER BY start DESC");

        while($result = mysql_fetch_assoc($sql_query)){
?>

<script language="javascript" src="ajax.js" type="text/javascript"></script>

<?
echo $result['produktnamn'];
echo "<div id=\"minDivTag\"></div>";

ajax.js:

function callback(serverData, serverStatus, id) { // Anropas när vi fått datat från servern
	if(serverStatus == 200){
  		document.getElementById(id).innerHTML = serverData;   //Skriv ut datat i vårt HTML element
	} else {
		document.getElementById(id).innerHTML = 'Laddar...'; 
	}
}
 
function ajaxRequest(openThis, id) {
 
   var AJAX = null; // Skapa AJAX variablen.

   if (window.XMLHttpRequest) { // Kolla om denna webbläsaren har ett XMLHttpRequest objekt?
      AJAX=new XMLHttpRequest(); // Om ja! -- Ladda det.
   } else { // Nej!, Försök skapa det på Microsofts sätt.
      AJAX=new ActiveXObject("Microsoft.XMLHTTP"); // Okej, då gör vi det med ActiveX
   } // Klart.
   if (AJAX==null) { // Om vi inte kunde skapa vårt AJAX objekt...
      alert("Din browser stödjer inte AJAX."); // Felmeddelande.                                               
      return false // Retunera false, vi misslyckades.
   }

   AJAX.onreadystatechange = function() { // När webbläsaren har den efterfrågade informationen.
      if (AJAX.readyState==4 || AJAX.readyState=="complete") { // Kolla om det är helt klart.
         callback(AJAX.responseText, AJAX.status, id); // Skicka vidare informationen för bearbetning.
      }  else { document.getElementById(id).innerHTML = 'Uppdaterar bud...'; 
         } 
   }

   var url= openThis; // Detta är adressen vi vill öppna.
   AJAX.open("GET", url, true); // Öppna adressen.
   AJAX.send(null); // Skicka en förfrågan.
}

ajaxRequest('2.php', 'minDivTag'); //Kör
var interval = setInterval("ajaxRequest('2.php?rnd='+Math.random() , 'minDivTag')",10000);
//Kör
nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

Det som är null är gissningvis document.getElementById(id), med andra ord får du inte tillbaka något giltigt element från funktionen. Pröva att lägg till alert(id) högst upp i callback för att försäkra dig om att du faktiskt får med värdet hela vägen.
Andra förslag:
(Om värdet skickas med korrekt i testet ovan) Stavas minDivTag precis så i id-attributet? (Alltså samma kombination av stora och små bokstäver)
(Om värdet inte skickas med korrekt) Pröva att lägg till raden var id=id; högst upp i ajaxRequest.

abh55pMedlem sedan okt. 20092 inlägg
#3

nitro2k01 skrev:

Det som är null är gissningvis document.getElementById(id), med andra ord får du inte tillbaka något giltigt element från funktionen. Pröva att lägg till alert(id) högst upp i callback för att försäkra dig om att du faktiskt får med värdet hela vägen.
Andra förslag:
(Om värdet skickas med korrekt i testet ovan) Stavas minDivTag precis så i id-attributet? (Alltså samma kombination av stora och små bokstäver)
(Om värdet inte skickas med korrekt) Pröva att lägg till raden var id=id; högst upp i ajaxRequest.

Hej igen!

Jag har provat att skriva var id=0; och 1 även id men inget fungerar?

Har provat att lägga den längst upp och i mitten osv.

Har googlat och insett att med ie är det många som har samma problem..

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb