Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] Przesyłanie tablicy z JavaScript do php
muumiin
post 11.12.2014, 16:17:56
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

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


Jak w temacie, potrzebuję przesłać tablicę do php. Znalazłam w googlach jakiś wzór i zrobiłam to według niego, ale nie wiem, czy instrukcje były złe, czy po prostu ja je źle zastosowałam... Może skopiuję kod java script:

  1. $(function() {
  2. /* mods */
  3. $( "#sortable2" ).sortable({
  4. update: function(event, ui) {
  5. var boxorder1 = $(this).sortable('toArray').toString(); //zapisywanie tablicy z kolejnością boxów.
  6. $("#boxorder").text (boxorder1); //wyświetlanie tej tablicy na stronie - wyświetla się, czyli poprawnie zapisana
  7. $.post('moduly.php', { boxorder1: JSON.stringify(boxorder1)}); //podobno ma to przesłać tablicę do pliku moduly.php
  8. }
  9. });
  10. });


Więc otwieram plik moduly.php, w którym jest taki kod (na razie tylko do testów):
  1. $boxorder1 = json_decode($_POST['boxorder1']);
  2. echo 'boxorder1[0] ' . $boxorder1[0]. '<br/> boxorder1[1]'. $boxorder1[1]. '<br/> boxorder1 '. $boxorder1;

A tam puściutko! wyświetlają się tylko 'stringi', nie ma żadnych wartości pod tymi zmiennymi.

Gdzie tu może być błąd? Pewnie jest to jakiś głupi błąd, ale niestety sama z tym sobie chyba nie poradzę :/
Go to the top of the page
+Quote Post
nospor
post 11.12.2014, 16:22:25
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Więc otwieram plik moduly.php
A jak ty go otwierasz?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maviozo
post 11.12.2014, 16:23:04
Post #3





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Najlepiej to zamiast echo daj var_dump($boxorder1); to dowiesz się dokładnie, co tam jest.
Go to the top of the page
+Quote Post
muumiin
post 11.12.2014, 16:27:25
Post #4





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

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


1) za pomocą include
2) za pomocą wpisania adresu

efekt ten sam.
var_dump($boxorder1); == NULL
Go to the top of the page
+Quote Post
maviozo
post 11.12.2014, 16:29:12
Post #5





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


No ale to przecież tak nie zadziała, bo moduly.php wygenerują coś dopiero po wysłaniu danych przez JS, a nie w trakcie generowania strony.
Są tylko 2 sposoby.

1) Pobierzesz odpowiedź PHP w trakcie wysyałania $.post i wyświetlisz przez JS.
2) Plik moduly.php zapisuje otrzymaną odpowiedź (w pliku, sesji, ciastku) i przy kolejnym odświeżeniu pobiera tę zawartość.
Go to the top of the page
+Quote Post
muumiin
post 11.12.2014, 16:34:55
Post #6





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

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


a da się wysyłać $.post "na bieżąco"? Chodzi o to, że to nie jest formularz, tylko ktoś sobie przestawia boxy jak tylko chce i przy kolejnym zalogowaniu ma je mieć tak samo, jak miał przy wylogowaniu. Wiem, że przede mną jeszcze długa droga do takiego efektu, ale chodzi o to, żeby te dane byly przesyłane w momencie, gdy ktoś przesunie box.
Go to the top of the page
+Quote Post
maviozo
post 11.12.2014, 16:40:26
Post #7





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


W takim razie powinno wystarczyć, że zapiszesz w moduly.php kolejność do ciasteczka, lub jeśli chcesz bardziej "pro" do bazy danych (ciasteczko po jakimś czasie znika, baza danych nie)
natomiast musisz jeszcze opracować sobie samo generowanie kolejności w HTML na podstawie tych danych.
Go to the top of the page
+Quote Post
muumiin
post 11.12.2014, 16:46:06
Post #8





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

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


jakiś pomysł na generowanie kolejności już mam, ale na razie nie mam jeszcze z czego tego generować wink.gif

jakbyście mi podpowiedzieli, jak tą tablicę przesłać z javascript do php - bardzo by mi to ułatwiło... Może ta metoda JSON wcale nie jest poprawna? W jakimś przykładzie w googlach to widziałam, ale w manualu nie mogę znaleźć niczego podobnego...

Ten post edytował muumiin 11.12.2014, 21:41:33
Go to the top of the page
+Quote Post
lord2105
post 11.12.2014, 21:58:35
Post #9





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


po 1
jeżeli chcesz tworzyć JSONa ze stringa no to nie tędy droga

  1. var boxorder1 = $(this).sortable('toArray');


powinno być tak

po 2 czy twoje elementy do sortable posiadają atrybuty ID w htmlu? jeżeli nie to masz pustą tablicę już w samym jsie

  1. $(this).sortable('toArray', {attribute: 'jakisattr'})


Jeżeli natomiast, jak napisałeś sam w komentarzu tablica wyswietla się no to tak zgodzę się ale wyświetla się string a ty w

prubujesz zrobić kolejny

  1. JSON.stringify(boxorder1)


Ten post edytował lord2105 11.12.2014, 21:59:00


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
muumiin
post 12.12.2014, 13:52:01
Post #10





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 17.09.2014
Skąd: Kraków

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


sama funkcja działa dobrze, mam id w htmlu.

Może przypomnę pytanie.
Chodzi mi tylko o to, potrzebuję zapisać te dane gdzieś na serwerze lub w bazie danych, a to można zrobić tylko z poziomu php. Ktoś na jakimś forum napisał, że aby przesłać dane do pliku php używa się metody JSON, ale to nie działa. Może to trzeba zrobić całkiem inaczej? Dziś coś czytałam o AJAXie, ale jak na razie w ogóle nie ogarniam...
Go to the top of the page
+Quote Post
trueblue
post 12.12.2014, 22:42:44
Post #11





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Z Twojego pierwszego postu wynika, że konwertujesz tablicę do stringa, po czym chcesz tego stringa zamienić w stringa za pomocą JSON.stringify.


--------------------
Go to the top of the page
+Quote Post
maviozo
post 13.12.2014, 15:19:31
Post #12





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Kod
Dziś coś czytałam o AJAXie, ale jak na razie w ogóle nie ogarniam...
Tak naprawdę Twoje wcześniejsze $.post() to nic innego jak skrót od $.ajax(), i obie korzystają właśnie z ajaxa smile.gif
Sam pomysł z jsonem nie jest zły, ale podejrzewam, że podobnie sprawiłby się serialize(), które możesz wysłać i odczytywać jako tablica $_POST.
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: 12.06.2025 - 11:06