Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery]Przesłanie wartości zaznaczonych checkboxów.
gcdreak
post 14.06.2009, 19:10:56
Post #1





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Witam!
Chcę za pomocą funkcji $.ajax przesłąć wartość (value) zaznaczonych pól checkbox.
Wartość jednego pola pobieram:
Kod
var jedna = $('input.check:checked').val();

a liczbę zaznaczonych checkboxow tak:
Kod
var ile = $('input.check:checked').length;


Wartości są pojedyńczymi liczbami. Jak zrobić, aby te wartości zaznaczonych checkboxów były przesyłane do skryptu PHP np: jako liczby oddzielone przecinkami?
Może jest jakiś prostszy sposób?

Jeżeli robię coś takiego:
Kod
for(i = 0; i < ile; i++){
            wszystkie[i] = jedna;
        }

To otrzymuje odpowiednią ilośc wartości, ale są to tylko wartości pierwszego wybranego checkboxa:/
Go to the top of the page
+Quote Post
sowiq
post 14.06.2009, 20:19:20
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Sprawdź to:
Kod
var z_przecinkami;
$('input.check:checked').each( function(){
    z_przecinkami += $(this).val() + ', ';
});
alert(z_przecinkami);


Ten post edytował sowiq 14.06.2009, 20:19:42
Go to the top of the page
+Quote Post
gcdreak
post 14.06.2009, 20:59:50
Post #3





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Dzięki wielkie.
Pięknie działa.
A jak można by to jeszcze zrobić, aby dziłało także jeśli user ma wyłączony javascript?
Go to the top of the page
+Quote Post
sowiq
post 14.06.2009, 23:17:38
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(gcdreak @ 14.06.2009, 21:59:50 ) *
A jak można by to jeszcze zrobić, aby dziłało także jeśli user ma wyłączony javascript?
Ajax to JavaScript. jQuery to JavaScript. Nie da się.

Ten post edytował sowiq 14.06.2009, 23:18:00
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 09:53:46
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
A jak można by to jeszcze zrobić, aby dziłało także jeśli user ma wyłączony javascript?

Nazwij checkboxy tymi samymi frazami "tablicując" (nazwa[]) i po submicie formularza używaj implode" title="Zobacz w manualu PHP" target="_manual.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
gcdreak
post 15.06.2009, 15:16:13
Post #6





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Tak zrobiłem i pojawia się pewna niezgodność. Jeśli używam AJAXa w ten sposób:
Kod
$('input.check:checked').each( function(){
           wszystkie += $(this).val() + ', ';
        });

to do skryptu przesyłany jest string. Z drugiej strony jeśli wyłącze JS to skrypt otrzymuje tablicę.
Pojawia się więc niezgodność.
Jak to ujednolicić?
Myślę, że najlepiej było by ten skrypcik jQuery trochę zmienić, aby przesyłał tablicę.
Jak to zrobić?
Go to the top of the page
+Quote Post
sowiq
post 15.06.2009, 15:23:24
Post #7





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Mój poprzedni kod + 15 sek na Google:
Kod
$('input.check:checked').each( function(){
    // tu musisz sobie sam poradzić ruszając głową
    kolejny_element_tablicy = $(this).val();
});

// zapytanie ajax żywcem z http://docs.jquery.com/Ajax/jQuery.ajaxSetup#options
$.ajaxSetup({
  url: "./superadresik.php",
  global: false,
  type: "POST"
});
$.ajax({ moja_tablica: wygenerowana_wczesniej_tablica });
Go to the top of the page
+Quote Post
gcdreak
post 15.06.2009, 16:28:45
Post #8





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Jakbym wiedział co mam w pisać w miejscu w którym napisałeś żebym ruszył głową, to bym nie pisał poprzedniego posta;P

Urzywam czegoś takiego:
Kod
$('input[type=submit]').click(function(){
        
        var ile = $('input.check:checked').length;
        var wszystkie = new Array;        

            for (i = 0; i < ile; i++) {
                $('input.check:checked').each( function(){
                    wszystkie[i] = $(this).val();
                });
            }

        
        
        $.ajax({
            type: 'post',
            url: '../skrypt.php',
            data: 'wszystkie=' + wszystkie,
            
            success: function(odpowiedz){
                $('ul#odpowiedz').fadeIn(1000).html(odpowiedz);
              
            }
            
        });//end ajax

        return false;
    });

Niestety przesyłane są tylko wartości największe, lecz w odpowiedniej ilości...
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 16:41:39
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Urzywam czegoś takiego:

Cytat
Niestety przesyłane są tylko wartości największe, lecz w odpowiedniej ilości...

Napisz najpierw po polsku oraz bez skrótów myślowych tak, aby każdy wiedział co masz na myśli...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
sowiq
post 15.06.2009, 16:50:37
Post #10





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat
Napisz najpierw po polsku
True.

Zamień:
Kod
for (i = 0; i < ile; i++) {
    $('input.check:checked').each( function(){
        wszystkie[i] = $(this).val();
    });
}


Na:
Kod
var i = 0;
$('input.check:checked').each( function(){
        wszystkie[i ++] = $(this).val();
});


each() to już pętla, więc for() nie jest potrzebny.
Go to the top of the page
+Quote Post
gcdreak
post 15.06.2009, 18:43:37
Post #11





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Niestety nie działa,
Skrypt PHP otrzymuje string.
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 18:51:22
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Kod
wszystkie[i ++]

Na pewno tu spacja potrzebna? tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
gcdreak
post 15.06.2009, 18:58:49
Post #13





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Nie powinno jej tam być.
My się zastanawiamy ale przecież to troche bez sensu jest myślenie i myślenie.
Wystarczy to w skrypcie:
Kod
if(is_array($wszystkie)){
         $wszystkie = strip_tags(trim(implode(',',$wszystkie)));
     }

i problemu nie ma;D

Ten post edytował gcdreak 15.06.2009, 18:59:14
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 Wersja Lo-Fi Aktualny czas: 26.06.2025 - 14:11