dynamisch met ajax maar menubalk kan ik niet meer aanpassen
Beste,
Ik heb een website waarbij de pagina's dynamisch laden met ajax waardoor het veel sneller werkt. Maar de menubalk wordt nu niet meer geladen. Ik heb daar echter een link "berichten" en daar moet het "aantal" zich aanpassen, dit gebeurt nu niet meer. Is daar een oplossing voor?
Ik heb:
Ik heb een website waarbij de pagina's dynamisch laden met ajax waardoor het veel sneller werkt. Maar de menubalk wordt nu niet meer geladen. Ik heb daar echter een link "berichten" en daar moet het "aantal" zich aanpassen, dit gebeurt nu niet meer. Is daar een oplossing voor?
Ik heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query = "SELECT COUNT(*) AS aantal
FROM yabg3_inhoud WHERE naam= '" . $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{
echo $rows['aantal'];
}
}
?> </a></li>
$query = "SELECT COUNT(*) AS aantal
FROM yabg3_inhoud WHERE naam= '" . $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{
echo $rows['aantal'];
}
}
?> </a></li>
hoe laad je hem in met ajax?
Een paar opmerkingen:
- Spring je code goed in
- Pas goede foutafhandeling toe op je query.
- Waarom een while, als je toch maar één result krijgt?
Een paar opmerkingen:
- Spring je code goed in
- Pas goede foutafhandeling toe op je query.
- Waarom een while, als je toch maar één result krijgt?
Gewijzigd op 06/04/2012 16:02:08 door - Ariën -
sorry, ik bedoel dat een deel van de pagina met ajax geladen wordt maar de menubalk niet, daarom kan het getal bij berichten zich niet aanpassen. Is daar een oplossing voor? Ik wil niet dat de menubalk zich telkens laad met ajax..
Bedankt voor de andere tips.
Bedankt voor de andere tips.
Kurtik watson op 06/04/2012 16:08:27:
Ik wil niet dat de menubalk zich telkens laad met ajax..
Dan is het simpele antwoord: nee.
Je zal op de een of andere manier de gegevens van de server naar de browser moeten krijgen. Dat kan via het herladen van de pagina (volledig), het herladen van een deel van de pagina via Ajax, of via een open verbinding. Maar als je al geen Ajax wil gebruiken dan lijkt het laatste me helemaal een stap te ver.
Overigens hoef je met Ajax natuurlijk niet de hele menubalk te herladen, je kan ook alleen het getal laden, wat opzich snel en licht zou moeten zijn.
alleen het getal laden zou perfect zijn! Maar hoe kan ik die query waarmee ik het getal ophaal dan apart in ajax zetten. Het getal moet langs de "berichten" link in de menubalk verschijnen?
Mvg
Mvg
Als ik het me goed herinner hebben dat al een keer gedaan voor je....
Toevoeging op 06/04/2012 17:20:15:
en ik heb nu gezocht, maar kan het topic niet meer vinden. Kan ook van iemand anders zijn geweest. In dat topic ging het erom dat een bepaalde score oid continu geupdate moest worden en dat alleen dat getal dus continu ververst moest worden, zonder de hele pagina te laden. De techniek die ik toen heb voorgesteld is dezelfde die ik aan jou heb voorgesteld: load() functie van JQuery.
Net zoals je nu een deel van de pagina via een Ajax connectie met load ophaalt, zo kan je ook het span (of div) waar dat aantal in staat verversen met load(). Aangezien je weet hoe het met die pagina's gaat, zou je dit ook moeten kunnen oplossen.
Toevoeging op 06/04/2012 17:20:15:
en ik heb nu gezocht, maar kan het topic niet meer vinden. Kan ook van iemand anders zijn geweest. In dat topic ging het erom dat een bepaalde score oid continu geupdate moest worden en dat alleen dat getal dus continu ververst moest worden, zonder de hele pagina te laden. De techniek die ik toen heb voorgesteld is dezelfde die ik aan jou heb voorgesteld: load() functie van JQuery.
Net zoals je nu een deel van de pagina via een Ajax connectie met load ophaalt, zo kan je ook het span (of div) waar dat aantal in staat verversen met load(). Aangezien je weet hoe het met die pagina's gaat, zou je dit ook moeten kunnen oplossen.
Hallo Erwin,
Je had mij het systeem uitgelegd dat met AJAX enkel een deel van pagina telkens geladen kan worden en dit werkt super! Maar mijn menubalk staat niet in de div van AJAX (laad_pagina). Dus indien ik de query waarmee ik het getal van berichten ophaal, in de div "laad_pagina" zet wordt het wel telkens opnieuw geladen maar staat het niet mooi langs berichten in de menubalk? Want deze menubalk wordt niet opnieuw geladen.
groeten,
Kurt
Je had mij het systeem uitgelegd dat met AJAX enkel een deel van pagina telkens geladen kan worden en dit werkt super! Maar mijn menubalk staat niet in de div van AJAX (laad_pagina). Dus indien ik de query waarmee ik het getal van berichten ophaal, in de div "laad_pagina" zet wordt het wel telkens opnieuw geladen maar staat het niet mooi langs berichten in de menubalk? Want deze menubalk wordt niet opnieuw geladen.
groeten,
Kurt
Heb je code voorbeelde?
Wordt bij de pagina laden een .html bericht of een .json of een .xml bestand opgehaald middels ajax?
Als het 1van de laatste 2 is kun je bij de success afhandeling je menu gewoon met javascript vullen met de waardes welke je vanaf de server mee stuurd.
Dus eigenlijk is de vraag, hoe handel je ajaxcall af.
Wordt bij de pagina laden een .html bericht of een .json of een .xml bestand opgehaald middels ajax?
Als het 1van de laatste 2 is kun je bij de success afhandeling je menu gewoon met javascript vullen met de waardes welke je vanaf de server mee stuurd.
Dus eigenlijk is de vraag, hoe handel je ajaxcall af.
Gewijzigd op 09/04/2012 23:33:06 door Erwin Goossen
Beste,
Ik werk gewoon met een div en jquery:
Ik werk gewoon met een div en jquery:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
session_start();
?>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<?php
}
else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<?php session_start(); ?>
<link rel="stylesheet" type="text/css" href="css1/scroll.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.preventDefault();
$('#target').load($(this).attr('href'), function() {
});
});
});
</script>
</head>
<body>
<ul id="thicktabs">
<li><a class="laad_pagina" href="index053.php">Wijzigen</a></li>
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query = "SELECT COUNT(*) AS aantal
FROM yabg3_inhoud WHERE naam= '" . $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{
echo $rows['aantal'];
}
}
?> </a></li>
</ul>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<a class="laad_pagina" href="index053.php">Laad pagina 1</a>
</body>
</html>
<?php
}
?>
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
session_start();
?>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<?php
}
else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<?php session_start(); ?>
<link rel="stylesheet" type="text/css" href="css1/scroll.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.preventDefault();
$('#target').load($(this).attr('href'), function() {
});
});
});
</script>
</head>
<body>
<ul id="thicktabs">
<li><a class="laad_pagina" href="index053.php">Wijzigen</a></li>
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query = "SELECT COUNT(*) AS aantal
FROM yabg3_inhoud WHERE naam= '" . $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{
echo $rows['aantal'];
}
}
?> </a></li>
</ul>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<a class="laad_pagina" href="index053.php">Laad pagina 1</a>
</body>
</html>
<?php
}
?>
vreemd, verkeerde topic.. sorry!
Gewijzigd op 10/04/2012 00:27:12 door Pieter Jansen
Kurtik watson op 09/04/2012 18:49:40:
Hallo Erwin,
Je had mij het systeem uitgelegd dat met AJAX enkel een deel van pagina telkens geladen kan worden en dit werkt super! Maar mijn menubalk staat niet in de div van AJAX (laad_pagina). Dus indien ik de query waarmee ik het getal van berichten ophaal, in de div "laad_pagina" zet wordt het wel telkens opnieuw geladen maar staat het niet mooi langs berichten in de menubalk? Want deze menubalk wordt niet opnieuw geladen.
groeten,
Kurt
Je had mij het systeem uitgelegd dat met AJAX enkel een deel van pagina telkens geladen kan worden en dit werkt super! Maar mijn menubalk staat niet in de div van AJAX (laad_pagina). Dus indien ik de query waarmee ik het getal van berichten ophaal, in de div "laad_pagina" zet wordt het wel telkens opnieuw geladen maar staat het niet mooi langs berichten in de menubalk? Want deze menubalk wordt niet opnieuw geladen.
groeten,
Kurt
Wat let je om precies hetzelfde te doen, maar dan voor een andere div? Met dus een andere functie en een andere url die je aanroept.
Heb het getest maar lukt me niet:-(
Zo moet in de onderstaande code de php code langs berichten dynamisch worden:wil er wel een vergoeding voor betalen, dan moet ik ergens anders dit posten zeker?
Zo moet in de onderstaande code de php code langs berichten dynamisch worden:wil er wel een vergoeding voor betalen, dan moet ik ergens anders dit posten zeker?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
session_start();
?>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<?php
}
else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<?php session_start(); ?>
<link rel="stylesheet" type="text/css" href="css1/scroll.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.preventDefault();
$('#target').load($(this).attr('href'), function() {
});
});
});
</script>
</head>
<body>
<ul id="thicktabs">
<li><a class="laad_pagina" href="index053.php">Wijzigen</a></li>
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query = "SELECT COUNT(*) AS aantal
FROM yabg3_inhoud WHERE naam= '" . $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{
echo $rows['aantal'];
}
}
?> </a></li>
</ul>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<a class="laad_pagina" href="index053.php">Laad pagina 1</a>
</body>
</html>
<?php
}
?>
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
session_start();
?>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<?php
}
else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<?php session_start(); ?>
<link rel="stylesheet" type="text/css" href="css1/scroll.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.preventDefault();
$('#target').load($(this).attr('href'), function() {
});
});
});
</script>
</head>
<body>
<ul id="thicktabs">
<li><a class="laad_pagina" href="index053.php">Wijzigen</a></li>
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query = "SELECT COUNT(*) AS aantal
FROM yabg3_inhoud WHERE naam= '" . $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{
echo $rows['aantal'];
}
}
?> </a></li>
</ul>
<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<a class="laad_pagina" href="index053.php">Laad pagina 1</a>
</body>
</html>
<?php
}
?>
Gewijzigd op 10/04/2012 22:35:46 door kurtik watson
Je kan wel dezelfde techniek gebruiken, maar je moet wel een andere load functie definieren. De gegevens die je laadt komen namelijk uit een ander bestand en in een andere target terecht. Als je het op hetzelfde moment wilt herladen (dus wanneer iemand van pagina verandert) dan kan je het zo doen. Anders kan je ook nog met een setTimeout het bijvoorbeeld elke minuut of zo herladen.
Regel 32 (en waar nu 100 staat kan je natuurlijk nog gewoon de code gebruiken die je boven hebt staan zodat je ook direct bij het laden van de pagina het juiste aantal hebt):
En dan de berichten.php daarin haal je het aantal berichten op uit je database en echo'ed dat naar het scherm.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<script>
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.preventDefault();
$('#target').load($(this).attr('href'), function() {
});
//dit is dus nieuw!!
$('#berichten').load('berichten.php');
});
});
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.preventDefault();
$('#target').load($(this).attr('href'), function() {
});
//dit is dus nieuw!!
$('#berichten').load('berichten.php');
});
});
Regel 32 (en waar nu 100 staat kan je natuurlijk nog gewoon de code gebruiken die je boven hebt staan zodat je ook direct bij het laden van de pagina het juiste aantal hebt):
En dan de berichten.php daarin haal je het aantal berichten op uit je database en echo'ed dat naar het scherm.
Gewijzigd op 13/04/2012 10:50:21 door Erwin H
Bedankt voor de info!!
Maar op de plaats waar je de 100 zet, daar moet ik dan niks zetten en alles in de berichten.php? In de berichten.php komt dan de query waar ik het aantal ophaal en dit echo ik dan zoals je hierboven aangeeft ook in de pagina berichten.php.
Kurt
Maar op de plaats waar je de 100 zet, daar moet ik dan niks zetten en alles in de berichten.php? In de berichten.php komt dan de query waar ik het aantal ophaal en dit echo ik dan zoals je hierboven aangeeft ook in de pagina berichten.php.
Kurt
Gewijzigd op 13/04/2012 22:19:04 door kurtik watson
Nee, zoals ik zeg, je kan er nog gewoon de code gebruiken die er al stond. Anders staat er niets totdat de gebruiker een nieuwe pagina laadt. Ik heb de DB code alleen even weg gelaten om het overzichtelijk te houden.




