Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] tablica jako argument funkcji
ZuuM
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.11.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
piotrekkr
post
Post #2





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
ZuuM
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.11.2009

Ostrzeżenie: (0%)
-----


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');\"";

Go to the top of the page
+Quote Post
piotrekkr
post
Post #4





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


  1. $naglowek=json_encode(array('nazwisko=', '&imie='));
  2. $tabid=json_encode(array('nazwisko','imie'));
Go to the top of the page
+Quote Post
ZuuM
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 14.11.2009

Ostrzeżenie: (0%)
-----


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');
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:09