Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP]Stworzenie obiektu JS ze zmiennych PHP
piespluto
post 16.04.2010, 23:23:04
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.04.2010

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


Chciałbym uzyskać taki obiekt w JS ze zmiennych, które pochodzą z PHP.
Kod
var datasets = {
        "usa": {
            label: "USA",
            data: [[1988, 483994], [1989, 479060], [1990, 457648], [1991, 401949], [1992, 424705], [1993, 402375], [1994, 377867], [1995, 357382], [1996, 337946], [1997, 336185], [1998, 328611], [1999, 329421], [2000, 342172], [2001, 344932], [2002, 387303], [2003, 440813], [2004, 480451], [2005, 504638], [2006, 528692]]
        },        
        "russia": {
            label: "Russia",
            data: [[1988, 218000], [1989, 203000], [1990, 171000], [1992, 42500], [1993, 37600], [1994, 36600], [1995, 21700], [1996, 19200], [1997, 21300], [1998, 13600], [1999, 14000], [2000, 19100], [2001, 21300], [2002, 23600], [2003, 25100], [2004, 26100], [2005, 31100], [2006, 34700]]
        },
        {
            ...
         }

Walcze,
Kod
<script>
var datasets = new Array();
var datasets2 = new Array();
<?php foreach($zmienna as $zm):?>
                datasets.label = '<?=$zm->wartosc?>';                
                <?php for($i = 0; $i < count($zm->a); $i++):?>
                        datasets.data.push([i,<?=$zm->a[$i]?>]);
                        i++;
                <?php endfor;?>
        datasets2['<?=$zm->name?>'] = datasets;

    <?php endforeach;?>
</script>

ale to nie działa jak należy..
Obiekty PHP mają juz odpowiednią strukturę do tych pętli.

Ten post edytował piespluto 17.04.2010, 00:31:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
mortus
post 17.04.2010, 00:51:56
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Jeśli $zmienna ma taką postać, jaką powinien mieć obiekt JavaScript, to wykorzystaj funkcję json_encode(). Od wersji PHP 5.2.0 jest to funkcja podstawowa, dla niższych musimy instalować rozszerzenie. Przykład:
  1. <script type="text/javascript">
  2. var datasets = <?php echo json_encode(array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5)); ?>;
  3. </script>
Go to the top of the page
+Quote Post
piespluto
post 17.04.2010, 17:58:18
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.04.2010

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


Źle się wyraziłem, że ma taką postać jak obiekt JS.
Ma taką postać jak poniżej:
  1. (
  2. [0] => stdClass Object
  3. (
  4. [name] => test
  5. [id] => 22
  6. [qt] => Array
  7. (
  8. [0] => 5
  9. [1] => 5
  10. [2] => 5
  11. [3] => 5
  12. [4] => 5
  13. [5] => 5
  14. [6] => 5
  15. [7] => 5
  16. [8] => 5
  17. [9] => 5
  18. [10] => 5
  19. [11] => 5
  20. [12] => 5
  21. [13] => 5
  22. )
  23.  
  24. )
  25.  
  26. [1] => stdClass Object
  27. (
  28. [name] => test2
  29. [id] => 24
  30. [qt] => Array
  31. (
  32. [0] => 1
  33. [1] => 1
  34. [2] => 1
  35. [3] => 1
  36. [4] => 1
  37. [5] => 1
  38. [6] => 1
  39. [7] => 1
  40. [8] => 1
  41. [9] => 1
  42. [10] => 1
  43. )
  44.  
  45. )

Więc jakby przygotowaną do tego żeby z niej utworzyć obiekt JS przy pomocy pętli. Drugą wartością dla pola data z obiektu JS będzie licznik pętli

pomoże ktoś ?

Ten post edytował piespluto 17.04.2010, 17:58:45
Go to the top of the page
+Quote Post
Ormin
post 17.04.2010, 20:11:55
Post #4





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 3.02.2009

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


<script type="text/javascript">
var datasets = <?php echo json_encode($zmienna); ?>;
</script>

Powinno dzialac..
Go to the top of the page
+Quote Post
piespluto
post 19.04.2010, 15:45:38
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.04.2010

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


Otrzymuje coś takiego, więc nie do końca to co chcę uzyskać [{"name":"test1","id":"22","position":["5","5","5","5","5","5","5","5","5","5","5","5","5","5"]},{"name":"test2","id":"24","position":["1","1","1","1","1","1","1","1","1","1","1"]}];

Jak widać pole data powinno zawierać tablice dwuelementowe a funckją json_encode tego nie uzyskam..

Jakieś inne pomysły ?

A jednak, po gimnastyce udało sie przy pomocy json_encode() osiągnąć zamierzoną postać , dzięki za pomoc !

Ten post edytował piespluto 18.04.2010, 22:27:07
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: 14.08.2025 - 07:39