Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript] "Załadowanie" wartości zmiennej z PHP do skryptu JS
Forum PHP.pl > Forum > Przedszkole
swiezak
Mam taki oto problem:
pewna zmienna o nazwie id ma wartość integer (przydzielaną dynamicznie), przykładowo 11. Teraz tą magiczną liczbę chciałbym przenieść do skryptu. Niestety nie wiem w jaki sposób.

Poniżej fragmenty kodu:
PHP:
  1. $id = $sf_params->get('catId');


jQuery:
  1. jQuery(document).ready(function() {
  2. var id = "<?php echo $id; ?>"; // niestety nie działa
  3. alert(id);
  4.  
  5. jQuery(\'#mycarouseid\'+id).jcarousel({
  6. auto: 4,
  7. wrap: \'last\',
  8. initCallback: mycarousel_initCallback
  9. });
  10. });


Czy ktoś jest w stanie mi pomóc? Byłbym wdzięczny.
patrysiek2
To:
  1. var id = "<?php echo $id; ?>"; // niestety nie działa

Zmień na to:
  1. var id = "<?=$id;?>"; // może zadziała
swiezak
Niestety, powyższy zapis również nie zdaje egzaminu.
johny_s
a ten kod z js masz generowany za pomoca php czy w pliku js? jak js to zapomnij ze zadziala


Cytat(patrysiek2 @ 1.06.2012, 11:57:52 ) *
To:
  1. var id = "<?php echo $id; ?>"; // niestety nie działa

Zmień na to:
  1. var id = "<?=$id;?>"; // może zadziała

toc to jeden czort
ixpack
Jezeli kod js masz w pliku php to Tobie zadziala <?php echo $var; ?>, jezeli jest to plik js...

To mozesz wykozystac technologie ajax/json

Prosty przyklad json (z jsonp, gdzie nie ma restrykcji cross-domain):

  1. function simpleJSON() {
  2. $.getJSON('http://localhost:55/jsonp.php?callback=?',
  3. {
  4. requestVar: 'example request'
  5. },
  6.  
  7. function(data){
  8. alert(data.returnVar);
  9. });
  10. }


  1. function generate_jsonp($data) {
  2. if (preg_match('/\W/', $_GET['callback'])) {
  3. // prawdopodobnie atak XSS.
  4. header('HTTP/1.1 400 Bad Request');
  5. exit();
  6. }
  7. header('Content-type: application/javascript; charset=utf-8');
  8. print sprintf('%s(%s);', $_GET['callback'], json_encode($data));
  9. }
  10.  
  11. //jakis switch albo co? Mamy $_GET['requestVar']; Moze to byc np nazwa funkcji do wywolania albo co.
  12.  
  13. generate_jsonp(array('returnVar' => 'dynamiczne id'));


I bedzie smigac.
swiezak
Kod jQuery mam zaszyty w pliku php.

Jego zawartość stanowi:
  1. $id = $sf_params->get('catId');
  2.  
  3. use_stylesheet('/jcarousel/jcarousel.skin.css');
  4. use_javascript('/jcarousel/jquery.jcarousel.min.js');
  5.  
  6. use_helper('JavascriptBase');
  7. echo javascript_tag('
  8. function mycarousel_initCallback(carousel)
  9. {
  10. carousel.clip.hover(function() {
  11. carousel.stopAuto();
  12. }, function() {
  13. carousel.startAuto();
  14. });
  15. };
  16.  
  17. jQuery(document).ready(function() {
  18. var id = "<?php echo $id; ?>";
  19.  
  20. jQuery(\'#mycarouselHorizontal\'+id).jcarousel({
  21. auto: 4,
  22. wrap: \'last\',
  23. initCallback: mycarousel_initCallback
  24. });
  25. });
  26. ');


Niby błahostka, a potrafi uprzykrzyć życie. Nie chce współpracować i koniec.
ixpack
debuguj

sprobuj przypisac $id na stale (dla testu)

Moze cache? Moze js za szybko chce cos tam zrobic?
swiezak
Jeśli wpiszę na sztywno jakąś konkretna wartość to działa.
Gdy tylko pojawia się zapis:
  1. var id = "<?php echo $id; ?>";

zaczynają się schody.

Gdy próbuję wyświetlić alert postaci
  1. alert(id)


zwracany jest ciąg znaków
  1. <?php echo $id; ?>
zamiast wartości typu integer.
Sephirus
Ło rany ... ale dywagacje...

A problem oczywisty...

Jesli używasz PHPowej funkcji javascript_tag to nie możesz w jej argumencie pisać rzeczy typu <?php echo $costam?> ... to się piszę gdy jesteś w HTMLu a nie w PHPie...

Zastąp to po prostu zapisem:

Kod
    var id = "'.$id.'";


arrowheadsmiley.png

swiezak
Dzięki serdeczne za pomoc. "Fucktycznie" szkolny błąd. Człowiek na starość głupieje biggrin.gif

Pozdrawiam wszystkich uczestniczących w niniejszej dyskusji.
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.