Autor Zpráva
svanda777
Profil
Dobrý den,

při kliknutí na obrázek by se měl smazat hlas z databáze, ale celý script nereaguje.
<img src="obrazky/dislike.png" onClick="vytvor pozadavek(<? echo $id; ?>,'l');">
// JavaScript Document  
function vytvor pozadavek(i,f){ 
   var url = "scripty/uprav_hlas.php";
   
   xhr.open("POST",url);
   xhr.onreadystatechange = volanaFunkce; //dojde-li ke změně, volej funkci volanaFunkce
   xhr.send('f='+f+'&i='i);
}
function vytvorXHR(){
    var xhr;
    try{
      xhr = new XMLHttpRequest();
    }catch(e){//pro případ starší verze prohlížeče
      var MSXmlVerze = new Array('MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp.2.0','Microsoft.XMLHttp');
      for(var i = 0; i <= MSXmlVerze.length; i ++){
        try{
          xhr = new ActiveXObject(MSXmlVerze[i]);
         //alert(MSXmlVerze[i]);
          break;
        }catch(e){
          //vzniklou chybu ignoruji a pokračuji nastavením další verze
        }
      }
    }
    if(!xhr)
      alert("Došlo k chybě při vytváření objektu XMLHttpRequest!");
    else
      return xhr;
  }
Chamurappi
Profil
Reaguji na svandu777:
V názvu proměnné (a tedy ani funkce) nemůže být mezera.
juriad
Profil
chyb je tam dost:
řádek 2: název funkce obsahuje mezeru
řádek 5: nedefinovaná proměnná xhr; nejspíš chceš před to dát příkaz: var xhr = vytvorXHR();
řádek 6: nedefinovaná proměnná volanaFunkce; pokud tě nezajímá, jestli se požadavek podařil, tento řádek úplně smaž, jinak vytvoř funkci volanaFunkce
řádek 7: chybí ti plus před poslední složkou (i)
svanda777
Profil
Už to skoro funguje jen pořád nejde ten script uprav_hlasy. Dal jsem do něj alert, ale ten se nezobrazuje.
juriad
Profil
Ty ale voláš uprav_hlas.php ne uprav_hlasy.
V PHP skriptu je ti alert k ničemu, ten se vykonává na serveru a javascript se v něm neinterpretuje.
svanda777
Profil
To byl překlep pouze tady, jinak je správně.
přikládám php script:
<?
$uzivatel = $_SESSION['uzivatel'];
if($_GET['f']=="d"){
include ("include/connect.php") ;
$pridej=mysql_query("DELETE * FORM kniha_hlasy WHERE id_uzivatele=$uzivatel") or die (mysql_error());
}else{
$id = $_GET['i'];
$pridej=mysql_query("INSERT INTO kniha_hlasy VALUES('','$uzivatel','$id')") or die(mysql_error());
}
 ?>        
jenikkozak
Profil
Tvá aplikace je velmi snadno zranitelná. Neměl bys slepě věřit uživateli, že se nepokusí s daty manipulovat. Veškeré vstupy od uživatele (tedy i ty proudící prostřednictvím AJAXu) escapuj.
polonium
Profil
A nemel bys hledat ty promene f a i v POSTu?
xhr.open("POST",url);

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: