Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
[JS,PHP] Dane nie są przesyłane - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: xHTML, CSS, JavaScript (https://www.webmastertalk.pl/forum-xhtml-css-javascript)
+--- Wątek: [JS,PHP] Dane nie są przesyłane (/thread-js-php-dane-nie-sa-przesylane)



[JS,PHP] Dane nie są przesyłane - kbzium - 04-08-2011

Cześć,

javascript dodaję sobie hidden inputy do istniejącego już formularza o id="Data" i cała operacaja przebiega pomyślnie (używam jak zawsze DOMa), tj. te inputy faktycznie powstają i są w nich dane jak należy. Form ma metodę post. I tutaj jest problem, gdy chcę submitować tego forma. Daję znajdź po id.submit() i faktycznie form jest submitowany, bo przechodzi do stronki z action (gdzie czyha odbieranie danych z post). Jednak na tej stronce nie są widoczne żadne dane, które powinny przecież zostać przesłane... co może być nie tak?

w pliku index.php, definicja pustego formularza:
Kod:
<form id="Data" method="POST" action="results.php"></form>

Dodam że nie jest on w żadnej tabeli, bo ponoć z formem w tabeli jest problem.

w pliku source.js:
Kod:
function ReadData()
{
    for(var row = 0; row < HEIGHT; row++)
        for(var col = 0; col < WIDTH; col++)
        {
                var current_field_elName = DcreateE("input");
                Dset(current_field_elName, "name", "Name|"+row+","+col);
                Dset(current_field_elName, "type", "hidden");
                
                var current_field_elShortName = DcreateE("input");
                Dset(current_field_elShortName, "name", "sName|"+row+","+col);
                Dset(current_field_elShortName, "type", "hidden");
                
                var current_field_elDirection = DcreateE("input");
                Dset(current_field_elDirection, "name", "Direction|"+row+","+col);
                Dset(current_field_elDirection, "type", "hidden");
                
                var current_field_elParameter1 = DcreateE("input");
                Dset(current_field_elParameter1, "name", "Parameter1|"+row+","+col);    
                Dset(current_field_elParameter1, "type", "hidden");    
                
                var dataForm = document.Data;
                
                Dappend(dataForm, current_field_elName);
                Dappend(dataForm, current_field_elShortName);
                Dappend(dataForm, current_field_elDirection);
                Dappend(dataForm, current_field_elParameter1);
        } // funkcja na razie tylko tworzy inputy (nie wczytuje danych)
}
function WriteData()
{    
var dataForm = document.Data;
    // tego nie dotykaj, bo to umieszcza (o ile dobrze zrobiles formy) potrzebne informacje w tabeli danych
    for(var row = 0; row < HEIGHT; row++)
        for(var col = 0; col < WIDTH; col++)
        {
                DgetID("Data|name|"+row+","+col).value = ArrSimTable[row][col][0].name;
                DgetID("Data|sName|"+row+","+col).value = ArrSimTable[row][col][0].shortName;
                DgetID("Data|direction|"+row+","+col).value = ArrSimTable[row][col][0].direction;
                DgetID("Data|parameter1|"+row+","+col).value = ArrSimTable[row][col][0].param1;
        }
        DgetID("Data").submit()    
}
przy czym wszystkie funkcje typu D... są to funkcje oparte na DOMie, które na pewno działają prawidłowo.


a tak odbieram (plik result.php)
Kod:
for($i=0;$i<Rows;$i++)
{

    for($j=0;$j<Cols;$j++)
    {

            $str='\'Data|name|'.$i.','.$j.'\'';
            echo $str.'<br>';
            $name[$i][$j]=$_POST[$str];
            $str='\'Data|sName|'.$i.','.$j.'\'';
            $sName[$i][$j]=$_POST[$str];
            $str='\'Data|direction|'.$i.','.$j.'\'';
            $direction[$i][$j]=$_POST[$str];
            $str='\'Data|param1|'.$i.','.$j.'\'';
            $param1[$i][$j]=$_POST[$str];
            
            echo $i.','.$j.' -- '.$name[$i][$j].','.$sName[$i][$j].','.$direction[$i][$j].','.$param1[$i][$j].'<br>';
            
    }
}



RE: [JS,PHP] Dane nie są przesyłane - Kartofelek - 04-08-2011

ale namieszane ;]
readData tworzy przyciski...
Najlepsze są te id " "Data|name|"+row+","+col ". Normalnie nie wiem po co ludzie tak kombinują i z prostych rzeczy takie czary tworzą.

Włącz sobie firebuga, spójrz co leci postem i będziesz miał rozwiązanie. Nic więcej nie potrzeba.
Najwyżej zrób print_r($_POST);


RE: [JS,PHP] Dane nie są przesyłane - kbzium - 05-08-2011

(04-08-2011, 23:40)Kartofelek napisał(a): ale namieszane ;]
readData tworzy przyciski...
Najlepsze są te id " "Data|name|"+row+","+col ". Normalnie nie wiem po co ludzie tak kombinują i z prostych rzeczy takie czary tworzą.

Włącz sobie firebuga, spójrz co leci postem i będziesz miał rozwiązanie. Nic więcej nie potrzeba.
Najwyżej zrób print_r($_POST);

Tak, ReadData() tworzy hidden inputy i jest to rozwiązanie tymczasowe. Firebug niestety nie znajduje błędów. Co do nazw to jest ich sporo i jakoś się musza wyróżniać akurat (wiem, że często lepiej jest uzyskać dostęp do pliku tablicą, a nie nadaniem nazwy).
Jakieś sugestie?


RE: [JS,PHP] Dane nie są przesyłane - Kartofelek - 05-08-2011

nie szukaj błędów. Sprawdź wysyłany post - co idzie. Jeżeli idą dobre dane - znaczy że strona odbiorcza zawodzi.