JQuery menu en refresh zitten elkaar in de weg.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick G

patrick G

23/02/2014 20:10:46
Quote Anchor link
Om mijn menu uit te klappen gebruik ik dit stuk script

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script>  
    (function($){  
        //cache nav  
        var nav = $("#topNav");  
        //add indicators and hovers to submenu parents  
        nav.find("li").each(function() {  
            if ($(this).find("ul").length > 0) {  
                $("<span>").text("").appendTo($(this).children(":first"));  
                //show subnav on hover  
                $(this).mouseenter(function() {  
                    $(this).find("ul").stop(true, true).slideDown();  
                });  
                //hide submenus on exit  
                $(this).mouseleave(function() {  
                    $(this).find("ul").stop(true, true).slideUp();  
                });  
            }  
        });  
    })(jQuery);  
</script>
Dat werkt prima.
Ergens anders op de pagina wil ik een <div> refreshen.
Met dit in de header gaat ook dat prima.
    <script>
    $(document).ready(function() {
    $("#commentrefresh").load("commentright.php");
    var refreshId = setInterval(function() {
        $("#commentrefresh").load('commentright.php?randval='+ Math.random());
    }, 9000);
});
</script>

Alleen als ik ze allebei gebruik, dan gaat het menu zich steeds verbreden zodra ik 1 keer refresh of een interne link aanklik.
Ik heb het idee dat 2 keer "function" elkaar in de weg zit, maar ik ben echt een NOOB als het om javascript gaat.
Iemand met de verlossende oplossing ?


- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Gewijzigd op 23/02/2014 20:15:50 door - Ariën -
 
PHP hulp

PHP hulp

05/11/2024 16:22:30
 
Kenny iets

kenny iets

23/02/2014 20:12:36
Quote Anchor link
rechts boven het kruisje ?
 
Patrick G

patrick G

23/02/2014 21:18:48
Quote Anchor link
Ik heb het 2e script vervangen door een soortgelijke:
<script>
$(document).ready(function () {
setInterval(function() {
$.get("commentright.php", function (result) {
$('#commentrefresh').html(result);
});
}, 10000);
});
</script>
Dat geeft hetzelfde probleem, wat er gebeurt is dat niet alleen de <div> wordt gerefrehd , maar ook nog een script met de naam modernizr, mijn hoop is gevestigd dat ik daar iets in kan vinden

Toevoeging op 24/02/2014 13:55:10:

Ik ben er nog niet uit, het ligt niet aan de javascripts.
Zou het kunnen dat $.load hetzelfde doet als de php functie $_GET ?
Ik werk namelijk met vriendelijke urls die met een $_get worden opgehaald en geinclude .

Toevoeging op 24/02/2014 15:43:33:

Ik ben er achter door de console van google te lezen dat de waarde van mijn include file, in de load wordt gelezen. Blijkbaar moet ik de leesactie beter definieren, zou alleen niet weten hoe.
Gewijzigd op 24/02/2014 14:14:39 door patrick G
 
Michael -

Michael -

24/02/2014 15:49:09
Quote Anchor link
De 2 scripts in je topic samengevoegd
Onderaan je pagina plaatsen net voor de </body></html>

Kun je de meldingen die je krijgt in de javascript-console hier plaatsen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script>  
$(document).ready(function() {
    //cache nav  
    var nav = $("#topNav");  
    //add indicators and hovers to submenu parents  
    nav.find("li").each(function() {  
        if ($(this).find("ul").length > 0) {  
            $("<span>").text("").appendTo($(this).children(":first"));  
            //show subnav on hover  
            $(this).mouseenter(function() {  
                $(this).find("ul").stop(true, true).slideDown();  
            });  
            //hide submenus on exit  
            $(this).mouseleave(function() {  
                $(this).find("ul").stop(true, true).slideUp();  
            });  
        }  
    });
    
    $("#commentrefresh").load("commentright.php");
    var refreshId = setInterval(function() {
        $("#commentrefresh").load('commentright.php?randval='+ Math.random());
    }, 9000);
});
</script>
 
Patrick G

patrick G

24/02/2014 16:14:04
Quote Anchor link
Er zijn geen foutmeldingen in de console, het zijn ook niet de scripts die conflicteren blijkt na veel zoekpogingen.
Ik zal schetsen wat er gebeurt (als ik de console bekijk)
In de pagina staat meerdere divs.
mijn.pagina.nl
<div 1>
<div 2*deze moet gerefreshd worden>
inhoud
</div>
</div>
eind.
Dit gaat goed,

maar zodra ik een pagina include met de $_GET (PHP) methode gebeurt het volgende.
mijn.pagina.nl/anderepagina.php
<div 1>
<div 2>
<div 1>
<div 2>
enzovoorts, enzovoorts
</div>
</div>
</div>
</div>
De inhoud van de div2 wordt niet de inhoud die gerefreshed moet worden, maar de complete inhoud van de website, en dat blijft zich herhalen in de "sub" div 2 en de boel loopt vast.
Ik moet dus voorkomen dat de inhoud van van G_GET van de PHP, geladen wordt door de javascript load.
 
Michael -

Michael -

24/02/2014 19:02:24
Quote Anchor link
Wat staat er in commentright.php wat betreft div's? Mogelijk komt daar de vermeendigvuldigingen vandaan.
Je kunt ook een bepaalde div van een pagina inladen. Misschien helpt dat.
$("#commentrefresh").load("commentright.php #div");
 
Patrick G

patrick G

24/02/2014 22:24:20
Quote Anchor link
@Michael
je hebt me wel getriggerdom iets aan te passen, maar dat verhelpt het probleem niet.
Er is 1 div #commentrefresh, die staat om de include_once("commentright.php"); heen, en php pagina haalt nu alleen de online gebruikers op.

Wat er gebeurt is dat al de informatie uit de $_GET wordt gerefreshd , blijkbaar kan wat ik wil helemaal niet, de jquery load geeft blijkbaar ook de php $_GET terug en gebruikt de informatie die daar in staat.
 
Michael -

Michael -

25/02/2014 08:14:36
Quote Anchor link
Het is handig om even wat meer informatie te laten zien.
De include_once is niet nodig, want je 'load' hem al met jQuery, dus dan heb je 'm al 2x geladen.
Die randval is bedoeld om te voorkomen dat IE het geheel niet vernieuwd (het voorkomt dat de cache wordt gebruikt) dus die GET heeft hier niks mee te maken.
 
Patrick G

patrick G

25/02/2014 12:48:49
Quote Anchor link
Het probleem is opgelost.
De .htaccess veranderde de server request d.m.v. een rewrite in:

www.mysite.nl/index.php?commentright.php.php .

daardoor werd de hele index.php meegeladen in de betreffende div.
Door het toevoegen van de volgende regel in .htaccess

RewriteRule ^(.*)/commentright.php /commentright.php

aan het begin van de rewrites is het probleem nu opgelost.
 
Michael -

Michael -

25/02/2014 13:07:31
Quote Anchor link
Mooi dat het is opgelost. Het lijkt nu of je een probleem gaat oplossen door die regel, maar kun je het probleem zelf niet oplossen dan?
 
Patrick G

patrick G

25/02/2014 14:13:52
Quote Anchor link
Dit was juist de veroorzaker van het probleem.
Ik gebruik .htaccess om vriendelijke URL's te lezen, maar dat beïnvloed ook de Jquery request.

Er is ook een andere oplossing, namelijk met javascript het antwoord van de server opsplitsen, maar dat is toch minder mooi, nu los ik het al op de server op.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.