Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Przesłanie tablicy do js a potem znowu do phpa
Forum PHP.pl > Forum > Przedszkole
Wykrywacz
Jak przekazać do JS wartości z checkboxów, a potem z js getem do php'a.

BO z $_GET['v_check'] dostaje takie coś [object HTMLCollection], a nie umiem znaleźć jak się do tego dobrać

  1. function akcje()
  2. {
  3. xmlhttp=GetXmlHttpObject();
  4. if (xmlhttp==null)
  5. {
  6. alert ("Browser does not support HTTP Request");
  7. return;
  8. }
  9. var url="./control.php";
  10. var v_check = document.getElementsByName("box");
  11.  
  12.  
  13. v_akcja = document.forms['kontrol'].akcja.value;
  14.  
  15. url=url+"?akcja="+v_akcja+"&check="+v_check;
  16. xmlhttp.onreadystatechange=stateChangedcheckbox;
  17. xmlhttp.open("GET",url,true);
  18. xmlhttp.send(null);
  19. }



  1. while ($sd = mysql_fetch_array($seldata)) {<input type="checkbox" name="box['.$sd['id_paczki'].']" value="'.$sd['id_paczki'].'">
  2. }
  3. <select id="akcja" name="akcja"><option value="0">Podpisz</option><option value="1">Odrzuć</option></select><input type="button" value="Akcja" onclick="akcje()">
nospor
Cytat
BO z $_GET['v_check'] dostaje takie coś [object HTMLCollection], a nie umiem znaleźć jak się do tego dobrać
smile.gif
Dostajesz tekst '[object HTMLCollection]' a nie obiekt - tak to jest jak sie do stringa wklada obiekt smile.gif

Musisz w js w petli przelecic po wszystkich checkboxach i pokolei wkladac ich wartosci
Wykrywacz
Czemu on mi się czepia w tej pętli?
  1. if(el[i].type=="checkbox" and el[i].checked==true)

Bo nie czaje o co mu chodzi?
(przy and pokazuje mi że chce mieć nawias, a przy el chce średników?questionmark.gif?


  1. function akcje()
  2. {
  3. xmlhttp=GetXmlHttpObject();
  4. if (xmlhttp==null)
  5. {
  6. alert ("Browser does not support HTTP Request");
  7. return;
  8. }
  9. var url="./control.php";
  10. el =document.getElementsByTagName("input");
  11. for(i=0;i<el.count();i++)
  12. {
  13. if(el[i].type=="checkbox" and el[i].checked==true)
  14. {
  15. v_check = el[i].value;
  16. v_akcja = document.forms['kontrol'].akcja.value;
  17. url=url+"?akcja="+v_akcja+"&check="+v_check;
  18. xmlhttp.open("GET",url,true);
  19. xmlhttp.send(null);
  20. }}
  21. xmlhttp.onreadystatechange=stateChangedcheckbox;
  22. }
nospor
w js nie ma AND. W js jest &&
Wykrywacz
Dzięki nospor
nospor
nie zrozumiales mojej idei, albo zrozumiales ale zrobiles po swojemu smile.gif
Mowiac ze masz w petli leciec po chekboxach mialem na mysli ze masz leciec, utworzyc jeden url ktory zawiera tablice checkboxow a nastepnie tak utworzony url dopiero wyslac ajaxem. A widze ze ty w petli dla kazdego checkboxa lecisz ajaxem. srednio optymalne.

Tworzenie tablicy w url polega na dodaniu []:
?zm[]=1&zm[]=4&zm[]=....
Wykrywacz
Nie zrozumiałem.

Zrobiłem tak:

  1. while (getElementsByname['box'].checked == true){
  2. url = url+"&box[]="+getElementsByname['box'].value;
  3. }


Czy o ten typ wrzucenia ci chodzi? czy nadal źle kminie?
nospor
o to mi chodzilo
Wykrywacz
Tak poprawiając już składnię:

W czym robię błąd? Bo nie chce mi żadnych wartości przesyłać? A wydaje mi się że wszystko jest okej

  1. while (document.getElementsByName("box").checked == true){
  2. url = url+"&box[]="+document.getElementsByName("box").value;
  3. }
nospor
1) Patrzyles wogole czy url ci sie poprawnie zbudowal?
2) Po stronie serwera patrzyles czy dostajesz to co myslisz?
3) Jak ty te wartosci wogole odbierasz?
Wykrywacz
[JAVASCRIPT] pobierz, plaintext
  1. var v_akcja;
  2. function akcje()
  3. {
  4. xmlhttp=GetXmlHttpObject();
  5. if (xmlhttp==null)
  6. {
  7. alert ("Browser does not support HTTP Request");
  8. return;
  9. }
  10. var url="./control.php";
  11. v_akcja = document.forms['kontrol'].akcja.value;
  12. url=url+"?akcja="+v_akcja;
  13.  
  14. while (document.getElementsByName("box").checked == true){
  15. url = url+"&box[]="+document.getElementsByName("box").value;
  16. }
  17. xmlhttp.onreadystatechange=stateChangedcheckbox;
  18. xmlhttp.open("GET",url,true);
  19. xmlhttp.send(null);
  20.  
  21. }
[JAVASCRIPT] pobierz, plaintext



  1. while ($sd = mysql_fetch_array($select_dane)){
  2. //
  3. //
  4. //
  5. <input type="checkbox" name="box" value="'.$sd['id_paczki'].'">
  6. }<select id="akcja" name="akcja"><option value="0">Podpisz</option><option value="1">Odrzuć</option></select><input type="submit" value="Akcja" onclick="akcje()">


control.php
  1. if (isset($_GET['akcja'])){
  2. main::nanies_zmiany($_GET['akcja'].$_GET['box']);
  3. }


Samego $GET['akcja'] przesyła.
nospor
Chyba wyrazilem się niejasno. Pozwól, że powtórzę:
1) Patrzyles wogole czy url ci sie poprawnie zbudowal?
2) Po stronie serwera patrzyles czy dostajesz to co myslisz?
3) Jak ty te wartosci wogole odbierasz?

Ustosunkuj się proszę do moich 3 punktów. W miejsce "PATRZYLES" masz mi udzielić odpowiedzi co zawiera dany element którego "PATRZYLES" dotyczy.

edit:
$_GET['akcja'].$_GET['box']
wykrywacz, czy ciebie trzeba jeszcze uczyc takich podstaw?
zrob sobie print_r($_GET) i zobacz co tam jest.
ale najpierw zrob:
Kod
while (document.getElementsByName("box").checked == true){
url = url+"&box[]="+document.getElementsByName("box").value;
}
alert(url);

i sprawdź tak jak prosilem, czy ten url zawiera to co ma zawierac.
Wykrywacz
Dzięki za nakierowanie już działa wszystko poprawnie.

Aczkolwiek while nie chciał mi tego przelecieć więc przerobiłem to na for.
[JAVASCRIPT] pobierz, plaintext
  1. var box = document.getElementsByName("box");
  2. for (var i=0;i<box.length;i++){
  3. if (box[i].checked == true){
  4. url = url+"&box[]="+box[i].value;
  5. }}
[JAVASCRIPT] pobierz, plaintext

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.