Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[AJAX] Star mark systeem werkt niet goed

Ik probeer een systeem te maken voor mijn project, waarmee je net als in Gmail bijvoorbeeld, bepaalde items met een ster kan markeren. Het gaat hier om een lijst met gebruikers. Elk van die gebruikers moet je met een ster kunnen markeren om ze zo zeg maar tussen je favorieten te zetten. Dit script is onder te verdelen in drie elementen: - De HTML code die het javascript oproept (in dit voorbeeld wordt dat gegenereerd door een stukje PHP, die alle users uit een database moet ophalen): [code:1:4b18e09ec7] echo "<div id=\"star$uid\" style=\"width:30px; height:30px; cursor:pointer;"; $uid = $row['id']; $star = mysql_query("SELECT * FROM stars WHERE (myip = '$myip') AND (userid='$uid')") or die(mysql_error()); $row2 = mysql_fetch_array($star); if ($row2['starred'] == 1) { echo " background-image:url(static/images/star_on.gif);"; } else { echo " background-image:url(static/images/star_off.gif);"; } echo " background-repeat:no-repeat; background-position:center \" onclick=\"ajaxAddStar('$uid','star$uid')\"> </div>"; echo "</td><td>"; [/code:1:4b18e09ec7] - De AJAX functie die vervolgens het uit te voeren stuk PHP oproept: [code:1:4b18e09ec7] function ajaxAddStar(str,x) { if (str.length==0) { document.getElementById(x).innerHTML="" return } xmlHttp=GetXmlHttpObject2() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="sheets/default/addStar.php" url=url+"?uid="+str xmlHttp.onreadystatechange=stateChanged2 xmlHttp.open("GET",url,true) xmlHttp.send(null) } function stateChanged2() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById(x).innerHTML=xmlHttp.responseText } } function GetXmlHttpObject2() { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp } [/code:1:4b18e09ec7] - En uiteindelijk, het stuk php dat ervoor zorgt dat er een ster tevoorschijn komt wanneer deze er nog niet staat en andersom: [code:1:4b18e09ec7] <?php $uid=$_GET['uid']; $myip=GetHostByName($REMOTE_ADDR); // Make a MySQL Connection mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("board") or die(mysql_error()); // Get all the data from the "example" table $result = mysql_query("SELECT * FROM stars WHERE (myip='$myip') AND (userid='$uid')") or die(mysql_error()); $match = mysql_num_rows($result); $row = mysql_fetch_array($result); if ($match == 1) { if ($row['starred'] == 1) { mysql_query("UPDATE stars SET starred='0' WHERE (myip='$myip') AND (userid='$uid')"); } elseif ($row['starred'] == 0) { mysql_query("UPDATE stars SET starred='1' WHERE (myip='$myip') AND (userid='$uid')"); } } elseif ($match == 0) { $insert = mysql_query("INSERT INTO stars (myip, userid, starred) VALUES('$myip', '$uid' ,'1' ) "); } $result2 = mysql_query("SELECT * FROM stars WHERE (myip='$myip') AND (userid='$uid')"); $row2 = mysql_fetch_array($result2); if ($row2['starred'] == 1) { echo "<div style=\"width:30px; height:30px; cursor:pointer; background-image:url(static/images/star_on.gif); background-repeat:no-repeat; background-position:center; \"> </div> "; } else { echo "<div style=\"width:30px; height:30px; cursor:pointer; background-image:url(static/images/star_off.gif); background-repeat:no-repeat; background-position:center; \"> </div>"; } mysql_close(); ?> [/code:1:4b18e09ec7] - Het script op zich werkt, maar met een aantal vreemde problemen: In firefox doet het script zijn werk, maar veranderd de ster pas wanneer je de pagina vernieuwd. - In internet explorer moet je eerst je cache legen voordat de afbeelding veranderd wordt. Ik heb al <META HTTP-EQUIV="pragma" CONTENT="no-cache"> geprobeerd te gebruiken, maar tevergeefs. Daarnaast geeft internet explorer een fout en zegt het volgende: Regel: 173 Teken: 1 Fout: 'x' is niet gedefinieerd Code: 0 Hij zegt dus dat de variabele x in de functie ajaxAddStar(str,x) niet gedefinieerd is, maar dat is toch wel zo?? Als ik de functie oproep, geef ik toch keurig twee variabelen mee?? Ik snap het probleem dus niet bepaald, weten jullie het op te lossen? Alvast bedankt (weer) :wink:

carlobernardini