JQuery menu en refresh zitten elkaar in de weg.
Code (php)
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
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>
(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!
Alvast bedankt!
Gewijzigd op 23/02/2014 20:15:50 door - Ariën -
rechts boven het kruisje ?
<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
Onderaan je pagina plaatsen net voor de </body></html>
Kun je de meldingen die je krijgt in de javascript-console hier plaatsen?
Code (php)
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
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>
$(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>
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.
Je kunt ook een bepaalde div van een pagina inladen. Misschien helpt dat.
$("#commentrefresh").load("commentright.php #div");
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.
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.
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.
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?
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.