Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[JS,PHP] Dane nie są przesyłane
#1
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>';
            
    }
}
Odpowiedz
#2
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);
Odpowiedz
#3
(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?
Odpowiedz
#4
nie szukaj błędów. Sprawdź wysyłany post - co idzie. Jeżeli idą dobre dane - znaczy że strona odbiorcza zawodzi.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [CSS]Bledne dane w formularzu Flap 4 2,833 14-02-2012, 20:46
Ostatni post: kornell
  Formularz i dane programista20 4 3,334 14-01-2010, 00:16
Ostatni post: programista20

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl