Autor Zpráva
Ondrej
Profil *
Zdravím!

Již několik hodin řeším drobný problém s jQuery a AJAXem. Jelikož s AJAXem pracuji dnes poprvé, nemám žádné zkušenosti.
Chci, aby se se zadáním hesla uživatelem do <input> zobrazila ve vedlejším <div> informace, zda je heslo správné.
Pravděpodobně dělám špatně to odeslání proměnných PHP kódu. Zrealizoval jsem to takto, ovšem nefunguje to:

jquery.js
$(document).ready(function() {
$("#pass_change").bind("change",function() {
    $.ajax({
      type : "POST",
      url : "check_pass.php",
      dataType : "json",
      data: {
        soucasne_heslo: $("#pass_change").val(),
        uzivatel: $("#user").attr("value")
      },
      success : function(data){
        if (data.error == false)
          $("check_pass").text("Správné heslo");
        if (data.error == true)
          $("check_pass").text("Špatné heslo!");
      }
    });
  });
});


check_pass.php
<?php
  sleep(3);
  $spojeni=mysql_connect("127.0.0.1", "...", "...") or die("Nelze se připojit k MySQL: " . mysql_error());
  mysql_select_db("databaze") or die("Nelze vybrat databázi: ". mysql_error());
  $vysledek=mysql_query("select hesla from pass where jmena = '".$_POST["uzivatel"]."'");
  $serverove_heslo=MySQL_Fetch_Array($vysledek);
  if (md5($_POST["soucasne_heslo"]) == $serverove_heslo["hesla"])
  {
    $return['error'] = false;
  }
  else
  {
    $return['error'] = true;
  }
  echo json_encode($return);


Asi to vidíte na první pohled, já bohužel ne.
Co mám špatně, prosím?

Děkuji!
Str4wberry
Profil
Ondreji, co si představujete pod takovým slovem „nefunguje“?
Ondrej
Profil *
Str4wberry:
Ach, děkuji za upozornění; vyjadřuji se neohrabaně.
Nic se v <div> nezobrazí. Zůstane nedotčený. Patrně nevykoná výše uvedený kód žádný výstup.
Alphard
Profil
S javascriptem vám moc neporadím, možná ale doporučím nějaký nástroj, který vám pomůže.
Používáte funkce prohlížeče nebo pluginy pro monitorování sítě? Při ladění AJAXu jsou velmi užitečné, zobrazí vám požadavek i odpověď serveru. V Opeře Dragonfly (Ctrl + Shift + I) karta Network. Ale lepší možnosti poskytují pluginy do Firefoxu, např. Firebug.

PHP část lze zjednodušit. Ve where může být pomocí and připojena podmínka porovnávající heslo, pak stačí kontrolovat počet vrácených záznamů.
Ondrej
Profil *
Alphard:
Děkuji, Vaše odpověď mi do budoucna velice pomůže!
Ondrej
Profil *
Jinak už jsem tu "záhadu" vyřešil.
Místo:
$("check_pass").text("Správné heslo");

Má být:
$("#check_pass").text("Správné heslo");


Už jsem se důkladně profackoval, takže snad si to zapamatuji.
Každopádně všem moc děkuji!
Witiko
Profil
Ondrej:
Ještě bych tam pro zkrácení přihodil ternární operátor:
$("#check_pass").text((data.error?"Špatné":"Správné") + "heslo");

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:

0