Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Instrukcja if dotycząca oddzielnych skryptów.
Forum PHP.pl > Forum > Przedszkole
kiepski96
Witam, mam dwa skrypty js, które wywołuję w jednym pliku php przez echo.
W obu mam instrukcje if, które zwracają true.

Ja chciałbym podsumować te 2 skrypty i w oddzielnym zrobić instrukcję:
if (skrypt 1 funkcja1== true && skrypt 2 funkcja2==true){
cośtamcośtam
}

Jakim sposobem to zrobić ?
kamil4u
Opisz dokładniej, bo nic nie rozumiem wink.gif

Ew. w JS funkcjonuje taki zapis:
Kod
if( funkcja1zSkryptu1() == true && funkcja2zSkryptu2() == true ){ /*Kod, który się wykona */ }

Taki zapis wywołuje funkcję 1 i sprawdza czy została zwrócona prawda( true ), jeśli tak to to samo dzieje się z funkcję 2 i jeśli również zwróci się prawda to wywołuje się funkcja.
kiepski96
ok, ale jak mam:

<?php
echo'
<script>
treść skryptu1
</script>

<script>
treść skryptu2
</script>

To jak mam się odwołać w skrypcie nr 3 do funkcji zawartej w skrypcie 1 (funkcja zalóżmy response) i do funkcji ze skryptu 2 (np. connect).
Przecież skrypty nie mają nazw, a w oddzielnym skrypcie nr 3 nie mogę przywołąć po prostu funkcji z 1 i 2 skryptu ?
kamil4u
Dlaczego nie możesz? Możesz smile.gif

Kod
<?php
echo'
<script>
treść skryptu1 // np function nazwa1(){ ..... return true; ..... }
</script>

<script>
treść skryptu2 // np function nazwa2(){ ..... return true; ..... }
</script>


i

Kod
if( nazwa1() == true && nazwa2() == true ){ /*Kod, który się wykona */ }
kiepski96
Niestety cośtutaj nie gra sad.gif :

Kod
<?php
echo'
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<script>
  FB.init({
    appId  : "XXX",
    status : true,
    cookie : true,
    xfbml  : true  
  });
</script>

<script>
$(document).ready(function(){
    FB.getLoginStatus(function(response) {
        if (response.status == "connected") {
            var user_id = response.authResponse.userID;
            var page_id = "XXX"; //coca cola
            var fql_query = "SELECT uid FROM page_fan WHERE page_id =" + page_id + " and uid=" + user_id;
            var the_query = FB.Data.query(fql_query);

            the_query.wait(function(rows) {

                if (rows.length == 1 && rows[0].uid == user_id) {
return true;

                } else {
                    $("#blokada").show();
                    //and here you could get the content for a non liker in ajax...
                }
            });
        } else {
            // user is not logged in
        }
    });
});
</script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<script type="text/javascript">
    window.fbAsyncInit = function() {
        FB.init({
          appId   : "XXX", // should be replaced with your Facebook Application ID
          status  : true, // check login status
          cookie  : true, // enable cookies to allow the server to access the session
          xfbml   : true // parse XFBML
        });
    };
</script>

<script type="text/javascript">        
    function streampublish_popup(){
        FB.ui(
        {
            method: "stream.publish",
            attachment: {
                name: "Demo Pulish To Wall With Popup And Call Back Function",
                description: (
                               "I have experienced with Share On Wall with Popup windows and would like to share with you. Check it now."
                            ),
                href: "http://4rapiddev.com/facebook-graph-api/facebook-publish-to-wall-with-popup-or-dialog-and-call-back/",
                media: [
                    {
                    "type":"image",
                    "src":"http://4rapiddev.com/wp-content/uploads/2011/09/Example-Publish-To-Wall-With-Popup-Windows.jpg",
                    "href":"http://4rapiddev.com/facebook-graph-api/facebook-publish-to-wall-with-popup-or-dialog-and-call-back/"
                    }
                ]
            },
            display: "popup"
        },
        function(response) {
            if (response && response.post_id) {
return true;
            } else {
$("#blokada1").show();
            }
        });
    }
</script>
<script>
if( function(rows) == true && function(response) == true ){
$("#filmik").show();
}
</script>';
?>
kamil4u
No to będzie problem smile.gif

Nie zrobisz tak w ten sposób, gdyż te funkcje są anonimowe( jak coś to szukaj w Google ).
Zobacz dokładnie w dokumentacji FB, na pewno mają w API funkcję, która sama to sprawdza smile.gif

Ew. zastosuj zmienne globalne. Czy tworzysz np. zmienne A i B i nadajesz im wartość false; Następnie w miejscach "return true;" dopisujesz A=true; i odpowiednio B=true; - jeszcze przed return-em. I dopiero wtedy: if( A == true && B == true ){

//edit
Nie spamuj na PW smile.gif - jak będę miał czas i odpowiednią wiedzę odpowiem samemu
kiepski96
A mogę zrobić tak, że

W miejsce return true wstawię zmienną php $zmienna==true i wyślę ją do php, wtedy w php je porównam ?
Wtedy nawet skrypt byłby bezpieczniejszy, ale czy na pewno zadziała ?
kamil4u
Tak nie zadziała, chyba że użyjesz AJAX smile.gif
kiepski96
zrobiłem tak jak napisałeś, ale chyba coś źle zrozumiałem, mógłbyś powiedzieć co jest nie tak?

Kod
<?php
echo'
<script>
a==false,
b==false;
</script>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<script>
  FB.init({
    appId  : "XXX",
    status : true,
    cookie : true,
    xfbml  : true  
  });
</script>

<script>
$(document).ready(function(){
    FB.getLoginStatus(function(response) {
        if (response.status == "connected") {
            var user_id = response.authResponse.userID;
            var page_id = "XXX"; //coca cola
            var fql_query = "SELECT uid FROM page_fan WHERE page_id =" + page_id + " and uid=" + user_id;
            var the_query = FB.Data.query(fql_query);
            the_query.wait(function(rows) {

                if (rows.length == 1 && rows[0].uid == user_id) {
a=true;

                } else {
                    $("#blokada").show();
                    //and here you could get the content for a non liker in ajax...
                }
            });
        } else {
            // user is not logged in
        }
    });
});
</script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<script type="text/javascript">
    window.fbAsyncInit = function() {
        FB.init({
          appId   : "XXX", // should be replaced with your Facebook Application ID
          status  : true, // check login status
          cookie  : true, // enable cookies to allow the server to access the session
          xfbml   : true // parse XFBML
        });
    };
</script>

<script type="text/javascript">        
    function streampublish_popup(){
        FB.ui(
        {
            method: "stream.publish",
            attachment: {
                name: "Demo Pulish To Wall With Popup And Call Back Function",
                description: (
                               "I have experienced with Share On Wall with Popup windows and would like to share with you. Check it now."
                            ),
                href: "http://4rapiddev.com/facebook-graph-api/facebook-publish-to-wall-with-popup-or-dialog-and-call-back/",
                media: [
                    {
                    "type":"image",
                    "src":"http://4rapiddev.com/wp-content/uploads/2011/09/Example-Publish-To-Wall-With-Popup-Windows.jpg",
                    "href":"http://4rapiddev.com/facebook-graph-api/facebook-publish-to-wall-with-popup-or-dialog-and-call-back/"
                    }
                ]
            },
            display: "popup"
        },
        function(response) {
            if (response && response.post_id) {
b=true;
            } else {
$("#blokada1").show();
            }
        });
    }
</script>
<script>
if( a == true && b == true ){
$("#filmik").show();
}
</script>';
?>
kamil4u
Kod
a==false,
b==false;

Poczytaj kurs o podstawach JS. Powinno być:
Kod
var a=false;
var b=false;


Jednak to nadal nie zadziała smile.gif

Spróbuj tak:
  1. <?php
  2. <script>
  3. var flaga=false;
  4.  
  5. </script>
  6. <script src="http://connect.facebook.net/en_US/all.js"></script>
  7. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
  8. <script>
  9. FB.init({
  10. appId : "XXX",
  11. status : true,
  12. cookie : true,
  13. xfbml : true
  14. });
  15. </script>
  16.  
  17. <script>
  18. $(document).ready(function(){
  19. FB.getLoginStatus(function(response) {
  20. if (response.status == "connected") {
  21. var user_id = response.authResponse.userID;
  22. var page_id = "XXX"; //coca cola
  23. var fql_query = "SELECT uid FROM page_fan WHERE page_id =" + page_id + " and uid=" + user_id;
  24. var the_query = FB.Data.query(fql_query);
  25. the_query.wait(function(rows) {
  26.  
  27. if (rows.length == 1 && rows[0].uid == user_id) {
  28. flaga=true;
  29.  
  30. } else {
  31. $("#blokada").show();
  32. //and here you could get the content for a non liker in ajax...
  33. }
  34. });
  35. } else {
  36. // user is not logged in
  37. }
  38. });
  39. });
  40. </script>
  41.  
  42. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
  43. <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
  44. <script type="text/javascript">
  45. window.fbAsyncInit = function() {
  46. FB.init({
  47. appId : "XXX", // should be replaced with your Facebook Application ID
  48. status : true, // check login status
  49. cookie : true, // enable cookies to allow the server to access the session
  50. xfbml : true // parse XFBML
  51. });
  52. };
  53. </script>
  54.  
  55. <script type="text/javascript">
  56. function streampublish_popup(){
  57. FB.ui(
  58. {
  59. method: "stream.publish",
  60. attachment: {
  61. name: "Demo Pulish To Wall With Popup And Call Back Function",
  62. description: (
  63. "I have experienced with Share On Wall with Popup windows and would like to share with you. Check it now."
  64. ),
  65. href: "http://4rapiddev.com/facebook-graph-api/facebook-publish-to-wall-with-popup-or-dialog-and-call-back/",
  66. media: [
  67. {
  68. "type":"image",
  69. "src":"http://4rapiddev.com/wp-content/uploads/2011/09/Example-Publish-To-Wall-With-Popup-Windows.jpg",
  70. "href":"http://4rapiddev.com/facebook-graph-api/facebook-publish-to-wall-with-popup-or-dialog-and-call-back/"
  71. }
  72. ]
  73. },
  74. display: "popup"
  75. },
  76. function(response) {
  77. if (response && response.post_id) {
  78. if( flaga ) $("#filmik").show();
  79. } else {
  80. $("#blokada1").show();
  81. }
  82. });
  83. }
  84. </script>';
  85. ?>

kiepski96
Dzięki, działa.

Chciałbym jeszcze, aby po lajknięciu czyli:

if (rows.length == 1 && rows[0].uid == user_id) {

strona się odświerzyła, jak to zrobić?
Dominator
Z tego co pamiętam to chyba

  1. location.reload(true);

kiepski96
Mam problem, jak w tym moim skrypcie umieścić zmienną php w na przykład:

name: "Treść zmiennej $name",

Pamiętając, że cały skrypt pokazuję w php przez echo

2. Mam problem z ty skryptem. Otóż kiedy polubi się stronę i udostępni pokazuje się filmik, wszystko okej. Ale jeśli się odświerzy stronę to wtedy po naciśnięciu udostępnij wyskakuje popup z facebooka i zamiast okienka do udostępnienia pisze, że wystąpił błąd, spróbuj później. Czym to jest spowodowane ?
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.