Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Wywołanie funkcji z dwoma argumentami działa, ale z trzema już nie?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
yahreck
Mam działający skrypt na 3 plikach.
1. po kliknięciu na przycisk radiowy uruchamia się funkcja zapisz w pliku wybor.js
index.html
  1. <head>
  2. <meta content="text/html; charset=ISO-8859-2" http-equiv="content-type">
  3. <script type="text/javascript" src="wybor.js"></script>
  4. </head>
  5. <body>
  6. <?php
  7. $zmienna1="costam1";
  8. echo "<input name='rekord' type='radio' value='1' onclick='zapisz( $zmienna1, this.value)'>wybor1";
  9. echo "<input name='rekord' type='radio' value='2' onclick='zapisz( $zmienna1, this.value)'>wybor2";
  10. echo "<input name='rekord' type='radio' value='3' onclick='zapisz( $zmienna1, this.value)'>wybor3";
  11. echo "<br>";
  12. ?>
  13. </body>

2. funkcja zapisz przesyła dwie zmienne metodą GET do pliku zapisz.php
wybor.js
[JAVASCRIPT] pobierz, plaintext
  1. var xmlhttp;
  2.  
  3. function zapisz (jeden,dwa)
  4. {
  5. xmlhttp=GetXmlHttpObject();
  6. var url="zapisz.php";
  7. url=url+"?1="+jeden+"&2="+dwa;
  8. url=url+"&sid="+Math.random();
  9. xmlhttp.open("GET",url,true);
  10. xmlhttp.send(null);
  11.  
  12. }
  13.  
  14. function GetXmlHttpObject()
  15. {
  16. if (window.XMLHttpRequest)
  17. {
  18. return new XMLHttpRequest();
  19. }
  20. return null;
  21. }
  22.  
[JAVASCRIPT] pobierz, plaintext

3. zapis do bazy mySQL
zapisz.php
  1. <?php
  2. header("Content-Type: text/html; charset=iso-8859-2");
  3. require("dane_bazy.php");
  4. $1=$_GET["1"];
  5. $2=$_GET["2"];
  6. $sql = "UPDATE `tabela` SET `2`='$2' WHERE `1`='$1' LIMIT 1";
  7. $sql_result = mysql_query($sql,$conn) or die(mysql_error());
  8. mysql_close($conn);
  9. ?>
  10.  

Powyższe przykłady działają
Wszystko działa, ale wtedy i tylko wtedy, gdy w pliku index.html wywołam funkcję zapisz z dwoma argumentami.
=======================================================================
Gdy wprowadzam trzeci argument wywołania funkcji zapisz (w liniach 9-11) skrypt przestaje działać. Po prostu do bazy nic nie zapisuje.
Poniższe przykłady NIE działają
  1. <head>
  2. <meta content="text/html; charset=ISO-8859-2" http-equiv="content-type">
  3. <script type="text/javascript" src="wybor.js"></script>
  4. </head>
  5. <body>
  6. <?php
  7. $zmienna1="costam1";
  8. $zmienna2="costam2";
  9. echo "<input name='rekord' type='radio' value='1' onclick='zapisz( $zmienna1, $zmienna2, this.value)'>$wybor1";
  10. echo "<input name='rekord' type='radio' value='2' onclick='zapisz( $zmienna1, $zmienna2, this.value)'>$wybor2";
  11. echo "<input name='rekord' type='radio' value='3' onclick='zapisz( $zmienna1, $zmienna2, this.value)'>$wybor3";
  12. echo "<br>";
  13. ?>
  14. </body>

[JAVASCRIPT] pobierz, plaintext
  1. var xmlhttp;
  2.  
  3. function zapisz (jeden,dwa,trzy)
  4. {
  5. xmlhttp=GetXmlHttpObject();
  6. var url="zapisz.php";
  7. url=url+"?1="+jeden+"&2="+dwa+"&3="+trzy;
  8. url=url+"&sid="+Math.random();
  9. xmlhttp.open("GET",url,true);
  10. xmlhttp.send(null);
  11.  
  12. }
  13.  
  14. function GetXmlHttpObject()
  15. {
  16. if (window.XMLHttpRequest)
  17. {
  18. return new XMLHttpRequest();
  19. }
  20. return null;
  21. }
  22.  
[JAVASCRIPT] pobierz, plaintext

  1. <?php
  2. header("Content-Type: text/html; charset=iso-8859-2");
  3. require("dane_bazy.php");
  4. $1=$_GET["1"];
  5. $2=$_GET["2"];
  6. $3=$_GET["3"];
  7. $sql = "UPDATE `tabela` SET `2`='$2', `3`='$3' WHERE `1`='$1' LIMIT 1";
  8. $sql_result = mysql_query($sql,$conn) or die(mysql_error());
  9. mysql_close($conn);
  10. ?>

i grom go wie czemu nie działają ...
kamil4u
Musi działać... - pokaż przykład 'na żywo'(czyli wstaw stronkę na jakiś serwer), tak, żebyśmy mogli stwierdzić, czy winna leży na pewno po stronie JS smile.gif
melkorm
Stringi w JS także trzeba ubrać w apostrofy / cudzysłowia czyli:

  1. <head>
  2. <meta content="text/html; charset=ISO-8859-2" http-equiv="content-type">
  3. <script type="text/javascript" src="wybor.js"></script>
  4. </head>
  5. <body>
  6. <?php
  7. $zmienna1="costam1";
  8. $zmienna2="costam2";
  9. ?>
  10. <input name="rekord" type="radio" value="1" onclick="zapisz( '<?php echo $zmienna1;?>', '<?php echo $zmienna2;?>', this.value)'><?php echo $wybor1;?>
  11. <input name="rekord" type="radio" value="2" onclick="zapisz( '<?php echo $zmienna1;?>', '<?php echo $zmienna2;?>', this.value)'><?php echo $wybor2;?>
  12. <input name="rekord" type="radio" value="3" onclick="zapisz( '<?php echo $zmienna1;?>', '<?php echo $zmienna2;?>', this.value)'><?php echo $wybor3;?>
  13. <br>
  14. </body>
yahreck
Dzięki melkorm.
A to ci dopiero, masz rację, że js nie będzie działać zagnieżdżone w php.
Dziwne, że z dwoma argumentami działało bez apostrofów/cudzysłowów, choć nie powinno, a z trzema już nie chciało...
I to mnie zmyliło. hehe
Najważniejsze, że działa!
melkorm
Cytat
A to ci dopiero, masz rację, że js nie będzie działać zagnieżdżone w php.


Będzie tylko trzeba uważać na apostrofy, ja stosuję zasadę: Zero html w php smile.gif dlatego tak to napisałem smile.gif O wiele czytelniejsze itp ;p
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.