Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] problem z formularzem
Forum PHP.pl > Forum > XML, AJAX
michal_robak
Witam. Mam taki oto skrypcik

w pliku stronka.php taki oto fragment:

  1. <div id="txtHint" style="font-size:12px;">


Dalej plik .js (struktura niektórym na pewno będzie znajoma):

  1. <?php
  2. var xmlHttp
  3. function polec_znajomego(str,str2)
  4. {
  5.    xmlHttp=GetXmlHttpObject()
  6.    if (xmlHttp==null)
  7.    {
  8.         alert ("Browser does not support HTTP Request")
  9.         return
  10.    }
  11.    url="style/ajax/Apolec_znajomego.php?imie="+str+"&nazwisko="+str2
  12.  
  13.    xmlHttp.onreadystatechange=stateChanged
  14.    xmlHttp.open("GET",url,true)
  15.    xmlHttp.send(null)
  16.    
  17. }
  18.  
  19.  
  20. function stateChanged()
  21. {
  22.    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  23.    {
  24.        .getElementById("txtHint").innerHTML=xmlHttp.responseText
  25.    }
  26. }
  27. function GetXmlHttpObject()
  28. {
  29.    var xmlHttp=null;
  30.    try
  31.    {
  32.        // Firefox, Opera 8.0+, Safari
  33.        xmlHttp=new XMLHttpRequest();
  34.    }
  35.    catch (e)
  36.    {
  37.        //Internet Explorer
  38.        try
  39.        {
  40.            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  41.        }
  42.        catch (e)
  43.        {
  44.            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  45.        }
  46.    }
  47.    return xmlHttp;
  48. }
  49. ?>


teraz w pliku Apolec_znajomego.php mam <input type="submit" name="polec" value="zatwierdź"> i mi cholera nie działa (po prostu jest nieaktywny).

Robiłem dwa motywy. Dałem w pliku strona.php jeden główny formularz i nie czyta mi tego submita. Walnąłem też w pliku Apolec_znajomego.php osobny przycisk ale też nie działa :/. Może ktoś coś doradzić questionmark.gif
bazyliszek83
Wklej prosze cały kod z pliku Apolec_znajomego.php...
erix
Kod
.getElementById("txtHint").innerHTML=xmlHttp.responseText

Nie masz tu błędu...?
michal_robak
błędu nie powinno być ponieważ jest to brane ze jakieś przykładowej stronki na temat ajaxa

chciałem tego uniknąć ale prosze:

  1. <?php
  2.  
  3.  
  4. $imie=$_GET["imie"];
  5. $nazwisko=$_GET["nazwisko"];
  6.  
  7. if($imie != NULL && $nazwisko != NULL)
  8. {
  9. //tu połączenie z bazą
  10.  
  11.    $sql = "SELECT * FROM profile WHERE imie LIKE '%".iconv("UTF-8", "ISO-8859-2", $imie)."%' AND nazwisko LIKE '%".iconv("UTF-8", "ISO-8859-2", $nazwisko)."%'";
  12.    $result = mysql_query($sql);
  13.    //echo "Wynikow ".mysql_num_rows($result);
  14.    $wynik_osoby=mysql_fetch_assoc($result);
  15.    $opis='';
  16.    $i=0;
  17.  
  18.  
  19.    
  20.    if(mysql_num_rows($result)!=0)
  21.    {
  22.        
  23.        $opis.= '
  24.        <table class=poz width="100%"><br>
  25.        <tr><td colspan=4>
  26.        <b>Osoby istniejące już</b>
  27.        </td></tr>
  28.        <tr><td><input type="hidden" id="ID_Znajomego" name="ID_Znajomego"></td></tr>
  29.        ';
  30.        do
  31.        {
  32.            $opis.= "<tr><td><table width='100%' align='left' class='poz' "; if($i%2==0)$opis.="background='img/tlogrupy.jpg'"; $opis.="><tr>";
  33.            $opis.= "<td nowrap width=20><input type=\"hidden\" name=\"nazwa_id[]\" name=\"nazwa_id[]\" value = ".$i."><input type='radio' onclick=\"document.getElementById('ID_Znajomego').value='".$wynik_osoby['Uid']."'\"  id='osoba' name='osoba' value='".$wynik_osoby['email']."'></td><td width=200>".$wynik_osoby['imie']." ".$wynik_osoby['nazwisko']."</td><td width=150>".$wynik_osoby['miasto']."</td>
  34.            <td  nowrap width=100><a href=\"profil_znajomego.php?Uid=".$wynik_osoby['Uid']."\" class='pomarancz' target='_blank'>pokaz profil</a></td>";
  35.            $opis.= "</tr></table></td></tr>";
  36.            $i++;
  37.        }
  38.        while($wynik_osoby=mysql_fetch_assoc($result));
  39.        $opis.= '<tr><td colspan=4>
  40.        </td></tr>
  41.        <tr><td colspan=4><input type="submit" name="polec" class="poz" value="Poleć profil"></td></tr>';
  42.        
  43.    }
  44.    else
  45.    {
  46.        $opis.= "<tr>";
  47.        $opis.= "<td><span style='color:green'><b>Nie ma osoby o takim imieniu i nazwisku</b></span></td>";
  48.        $opis.= "</tr>";
  49.     }
  50.    $opis.= "</table>";
  51.    mysql_close($con);
  52. }
  53. else
  54. {
  55.    $opis.= "<b>W celu sprawdzenia poprawnosci musisz podać pełne imie i nazwisko</b>";
  56. }
  57.  
  58. //$opis = strtr($tekstISO, iso2utf());
  59. $nazwa = explode(" ", $_SERVER['HTTP_USER_AGENT']);
  60.  
  61. if($nazwa[0]=="Mozilla/4.0")
  62. {
  63.    $opis = iconv("ISO-8859-2",  "UTF-8",$opis);
  64. }
  65. else
  66. {
  67.    
  68. }
  69.  
  70. echo $opis;
  71.  
  72. ?>


cały kod wyświela poprawnie tylko nie pobiera tego przycisku
bazyliszek83
Hmm, nadal nigdzie nie widze wywoływanej funkcji polec_znajomego()...

Proponuje coś takiego zmienić w linii 45 pliku Apolec_znajomego.php:
  1. <?php
  2. <tr><td colspan=4><input type="submit" name="polec" class="poz" value="Poleć profil" onClick="polec_znajomego('.$imie.','.$nazwisko.');"></td></tr>;
  3. ?>
michal_robak
a cholera no nie dałem tej rzeczy bo jakoś o niej zapomnialem smile.gif ... mam ją w pliku stronka.php:

  1. <tr>
  2. <td >Imię:</td>
  3. <td><input name="imie" type="text" value="" class="poz"><span class="style1">* </span></td>
  4. </tr>
  5. <tr>
  6. <td>Nazwisko:</td>
  7. <td><input name="nazwisko" type="text" value="" class="poz"><span class="style1">*</span><input type="button" value="sprawdź" onclick="polec_znajomego(osobniK.imie.value,osobniK.nazwisko.value)" class="poz"></td>
  8. </tr>
  9. <tr>
  10. <td colspan=2 align=left><div id="txtHint" name="txtHint" style="font-size:12px;"></div></td>
  11. </tr>


czyli w tym pliku odwołuje się do tej funkcji w której pobieram wyniki na podstawie pola imi i nazwisko. Wyniki się wyświetlają poprawnie. Tylko nei działa mi ten przycisk SUBMIT tak jakby on forma nie widział
bazyliszek83
Powiem szczerze że ja też forma nie widze:)

Zapewne masz go gdzieś w innym pliku, dlatego prosiłbym o wrzucenie również jego kodu:)
michal_robak
heheh proście a będzie wam dane biggrin.gif: (całość znajduje się w pliku stronka.php)

  1. <table class="poz" width="95%" align="center">
  2. <form name="osobniK" id="osobniK" method="POST">
  3. <tr align="center">


...

  1. <tr>
  2. <td >Imię:</td>
  3. <td><input name="imie" type="text" value="" class="poz"><span class="style1">* </span></td>
  4. </tr>
  5. <tr>
  6. <td>Nazwisko:</td>
  7. <td><input name="nazwisko" type="text" value="" class="poz"><span class="style1">*</span><input type="button" value="sprawdź" onclick="polec_znajomego(osobniK.imie.value,osobniK.nazwisko.value)" class="poz"></td>
  8. </tr>
  9. <tr>
  10. <td colspan=2 align=left><div id="txtHint" name="txtHint" style="font-size:12px;"></div></td>
  11. </tr>



...


  1. </tr></form>


no teraz chiba juz nie ma się do czego przyczepić biggrin.gif
bazyliszek83
No niestety musze się przyczepić:)

Konkretnie do tego:
  1. type="button"


Powinno być :
  1. type="submit"


jeśli chcesz żeby formularz się wysłał po klilnięciu:)
michal_robak
ale ale to nie tak ma działać ....


pkt 1 primo ....

wpisuje w formularzu imię oraz nazwisko

pkt 2 primo ...

klikam w przycisk:

  1. <input type="button" value="sprawdź" onclick="polec_znajomego(osobniK.imie.value,osobniK.nazwisko.value)" class="poz">


który spowoduje mi dynamiczne wyświetlenie się części danych pobranych z pliku Apolec_znajomego.php (plik wyświetla dane + końcowy przycisk)

pkt 3. prmio ultimo ...

po kliknięciu w przycisk

  1. <input type="submit" name="polec" class="poz" value="Poleć profil">


formularz ma się przeładować pobierając zaznaczone dane lecz niestety się nie klika :/
bazyliszek83
To rzuć może całość wygenerowanej przez przegladarkę strony, albo najlepiej podaj link gdzie można to sobie obejrzeć.
Spawnm
jeśli można się czepić 1 pliku :
nie dajesz wszędzie ;

.getElementById("txtHint").innerHTML=xmlHttp.responseText
prze . powinno być chyba document , no i na końcu ;
smile.gif
michal_robak
problem pierwszy

nie moge podać linku ponieważ znajduje się to na pewnym portalu który zostanie wzbogacony o tę opcję lecz nie chce mi działać jak na złość.

problem drugi

skrypt generowany jest automatycznie i ni jak idzie sprawdzić jego podgląd

COŚ NOWEGO

sprawdziłem teraz tą stronkę w IE i co prosze stronka się przeładowuje po kliknięciu w przycisk a testowałem w Operze i nie działa exclamation.gif. Dziwne ale tak zawsze jest ze działają jakby sobie na złość:/
erix
A co jest w konsoli błędów?
bazyliszek83
Cytat(michal_robak @ 18.03.2009, 15:45:54 ) *
problem pierwszy

nie moge podać linku ponieważ znajduje się to na pewnym portalu który zostanie wzbogacony o tę opcję lecz nie chce mi działać jak na złość.

problem drugi

skrypt generowany jest automatycznie i ni jak idzie sprawdzić jego podgląd

COŚ NOWEGO

sprawdziłem teraz tą stronkę w IE i co prosze stronka się przeładowuje po kliknięciu w przycisk a testowałem w Operze i nie działa exclamation.gif. Dziwne ale tak zawsze jest ze działają jakby sobie na złość:/


A pod FF sprawdzales?
michal_robak
no właśnie sprawdziłem i mi krzyczy że coś form jest źle domknięty bo był pomiędzy między <table> a <tr> wiec wrzuciłem go przed <table> i działa ... a łyżka na to niemożliwe <glupek>
bazyliszek83
Na przyszłość zaczynaj sprawdzanie od FF a nie od Opery:)
michal_robak
niom bedę musiał częściej zaglądać do FF. Dzięki za pomoc <peace>. BTW nie cierpie IE ani FF ze względu na to że w porównaniu z operą są znaaaaaaaaaaacznie wolniejsze. A Opera śmiga jak bum cyk cyk lecz mało kto jej używa i niekiedy o tym zapominam i wówczas wychodzą takie krzaczki smile.gif.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.