Meddelande

Minska
No announcement yet.

kolla efter nya meddelande utan siduppdatering?

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • kolla efter nya meddelande utan siduppdatering?

    hej , jag ville göra så att sidan visar om man har ett nytt meddelande utan att användaren behöver uppdatera sidan...

    så jag kom fram till
    PHP-kod:
    var check;
    function 
    checkForMessages() {
        $.
    get("/page.php", function($newpm_sql) {
            if(
    $newpm_sql >= 1) {
                          
    clearTimeout(check);
                
    alert("nytt meddelande!");
            }
        }
    }

    setInterval(checkForMessages60000);- 
    det är en kod som jag skrev eftersom jag inte kan sånt så bra så vill jag att kolla upp koden , är den rätt? skulle den funka`?

  • #2
    Du sätter ju aldrig variablen check till en timeout/interval, så att cleara den hjälper inte något, sen skall din /page.php retunera ett nummer (även om den kommer returnera en sträng).

    Sen gillar jag inte setInterval... metoden kan ju ta mer än 6 sekunder att köra (även om det inte är i detta fallet)
    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

    Kommentera


    • #3
      Det ser väl bra ut, om nu page.php returnerar hur många nya meddelanden som finns. Fungerar det inte?

      Kommentera


      • #4
        kan du eller någon som har lust att fixa det jag har missat? , som sagt eftersom jag är inte så bra på sånt

        Kommentera


        • #5
          är ju svårt att säga då jag har ingen aning om vad din page.php retunera för data.
          "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

          Kommentera


          • #6
            jag tror att du frågar efter detta ?
            PHP-kod:
            $newpm_sql mysql_query("SELECT `id` FROM `pm` WHERE `to` = '"$_SESSION['id'] ."' AND `status` = '0'") or die(mysql_error()); 

            Kommentera


            • #7
              och den retunera vad? ett tal alltid?
              "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

              Kommentera


              • #8
                nej , inte om det inte finns minst 1 meddelande , egentligen så körde jag message alert med php :
                PHP-kod:
                $newpm_sql mysql_query("SELECT `id` FROM `pm` WHERE `to` = '"$_SESSION['id'] ."' AND `status` = '0'") or die(mysql_error());
                if (
                mysql_num_rows($newpm_sql) >= 1)
                $newpm ' <b>('mysql_num_rows($newpm_sql) .')</b>'; }
                else
                $newpm ''; } 
                men eftersom den inte uppdateras av sig själv så vill jag kör ajax/javascript

                Kommentera


                • #9
                  Nu blandar du PHP och javascript. för det första så är PHP ett server språk och javascript är ett klientspråk för webbläsaren, $newpm måste skrivas ut på php sidan då javascript inte har någon som helst tillgång till några server variabler.


                  Nu känner jag att jag måste förklara lite hur jquery.get fungera:

                  get har en callback metod:
                  [kod]$.get("/page.php", function($newpm_sql) {
                  if($newpm_sql >= 1) {
                  }
                  });[/kod]i denna kod-block så är det function($newpm_sql) {} som är det callback block som kommer köras så fort ajax anropet har lyckats. Metoden har en parameter och det är den data som retuneras ifrån servern ( i ditt fall verkar det inte vara något då du inte har echo på $newpm, men vi säger att du har detta och då kommer $newpm_sql innehålla ' <b>(xxx)</b>' eller ''

                  Om vi har en HTML markup på sidan som ser ut som:

                  <div id="new_pm"></div> eller om du nu presentera $newpm från php (samma resultat som i din page.php)

                  så kan du ha:
                  [kod]var checkForMessages = function() {
                  $.get("/page.php", function($newpm_sql) {
                  $("#new_pm").html($newpm_sql);
                  }
                  };[/kod]Så kommer den uppdatera DOM-elementet med ett id med #new_pm med datan som ajax anropet får från serven.

                  jag hade gjort Javascripts koden:
                  [kod]var checkForMessages = function() {
                  $.get("/page.php", function(data) {
                  $("#new_pm").html(data);
                  check = setTimeout(checkForMessages, 6000);
                  }
                  });
                  var check = setTimeout(checkForMessages, 6000);[/kod]för att den bara skall hämta varje 6 sekund efter en lyckad hämtning av page.php
                  "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                  Kommentera


                  • #10
                    ok tack för förklaringen, nu tror jag att jag fattar hur det går till .. och det är bara det , behöver inte lägga nåt mer i html strukturen , right?
                    går och testar den nu

                    Kommentera


                    • #11
                      page.php behöver bara retunera det du vill presentera i #new_pm
                      "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                      Kommentera


                      • #12
                        ok så blev det för mig (detta är i page.php ,head delen medan diven är i body.php)
                        Kod:
                        <script type="text/javascript">var checkForMessages = function() {
                        	$.get("/page.php", function(data) {
                                $("#userbar").html(data);
                        		check = setTimeout(checkForMessages, 6000);
                            }
                        };
                        var check = setTimeout(checkForMessages, 6000);
                        </script>
                        men det funkade inte, har jag gjort fel nånstans?

                        Kommentera


                        • #13
                          lägg upp koden eller berätta vad konsollen säger att det bli för fel.
                          "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                          Kommentera


                          • #14
                            det saknas ) i koden:
                            [kod]var checkForMessages = function() {
                            $.get("/page.php", function(data) {
                            $("#userbar").html(data);
                            check = setTimeout(checkForMessages, 6000);
                            });
                            };
                            var check = setTimeout(checkForMessages, 6000);[/kod] demo: http://jsbin.com/otusoz/edit#javascript,html,live
                            "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                            Kommentera


                            • #15
                              vilken kod begär du ?

                              Kommentera

                              Working...
                              X