Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] tablica jako argument funkcji
Forum PHP.pl > Forum > Przedszkole
ZuuM
Witam. Potrzebuję w jaki sposób zadeklarować oraz używa (przykładowe wywołanie) się funkcji w JS, która pobiera 3 argumenty, między innymi tablicę (wektor przygotowany w skrypcie PHP). Tej funkcji będę używał do przekazania "id" z formularza html'owych inputów ( przy zdarzeniu "onclick"). Wewnątrz funkcji będę generował łańcuch znaków do nagłówka przesyłanego metodą POST. Deklaracja działająca tak jak ta z zamieszczonego niżej przykładu w C

Kod
void nazwa(char *naglowek, char **tablicanapisow, int iloscnapisow);


Z góry dziękuję i pozdrawiam ZuuM.
piotrekkr
Mało co z tego zrozumiałem smile.gif Jak byś mógł krok po kroku opisać jak to ma działać i co chcesz osiągnąć.

Generalnie żeby połaczyć php z javascriptem możesz zrobić 2 rzeczy.

1. odpytać serwer o dane używając AJAX-a
2. wypisać dane z php podczas generowania widoku strony np.:

  1. <script type="text/javascript">
  2. var $tablicanapisów = <?php echo json_encode(array('napis1', 'napis2', 'napis3')) ?>;
  3. var naglowek = 'naglowek';
  4. var iloscnapisow = 4;
  5. nazwa(naglowek, tablicanapisow, iloscnapisow);
  6. </script>
ZuuM
Napisałem kilka (może z 10) funkcji, które robią niemal to samo, różnią się tylko nagłówkiem i skryptem, do którego wysyłam dane z formularza za pomocą AJAX'u
Oto przykładowa funkcja:
Kod
function DodajNauczyciela(){
        if (XMLHttpRequestObject){
         var w = document.getElementById('n1');
         var nazwisko = document.getElementById('nazwisko').value;
         var imie = document.getElementById('imie').value;
         var header="nazwisko="+nazwisko+"&imie="+imie;
         XMLHttpRequestObject.open('POST','admintool/nauczyciel.php','true');
         XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
         XMLHttpRequestObject.onreadystatechange = function (){
            if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){
                w.innerHTML = XMLHttpRequestObject.responseText;
            }
          }
          XMLHttpRequestObject.send(header);
                }
}

Chciałbym ją nieco zmodyfikować, aby była bardziej uniwersalna. Coś wyglądającego mniej więcej tak:
Kod
function UniwersalnaFukcja(naglowek,tabid,ilosc,cel){
        if (XMLHttpRequestObject){
         var w = document.getElementById('n1');
         var header;
                 for(var i=0;i<ilosc;i++){
                    header+=naglowek[i];
                    header+=document.getElementById(tablicaid[i]).value;
                 }
         XMLHttpRequestObject.open(cel,'true');
         XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
         XMLHttpRequestObject.onreadystatechange = function (){
            if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){
                w.innerHTML = XMLHttpRequestObject.responseText;
            }
          }
          XMLHttpRequestObject.send(header);
                }
}


Problem mam z przygotowaniem w php tablic z danymi tak, żeby w JS zmienne naglowek i zmienną tablicaid traktowało jako tablicę, a nie jako String.
Poniżej zamieszcze jeszcze kod w jaki sposób wywołuję tę fukcję w skrypcie php.

  1. $naglowek=array('nazwisko=', '&imie=');
  2. $tabid=array('nazwisko','imie');
  3.  
  4. echo "<input type=button onclick=\"UniwersalnaFunkcja(".$naglowek.",".$tabid.",2,'admintool/nauczyciel.php');\"";

piotrekkr
  1. $naglowek=json_encode(array('nazwisko=', '&imie='));
  2. $tabid=json_encode(array('nazwisko','imie'));
ZuuM
Dzięki za podpowiedź, ale mimo to mam dalej błąd składni w funkcji JS. Poszukałem po internecie jak jest zapisywana tablica w JS. Jest drobna różnica, a mianowicie używając fukcji json_encode() tablice zapisuje w taki sposob ["e1","e2",...,"en"] zaś w JS składnia tablicy wygląda tak ['e1','e2',...,'en'].
PS. jeżeli ktoś będzie wykorzystywał te funkcję (mało prawdopodobne tongue.gif) to jest w niej błąd przy XMLHttpRequestObject.open(cel,'true'); powinno być XMLHttpRequestObject.open('POST',cel,'true');
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.