Ajax refresh php script en div
Gewijzigd op 26/09/2012 14:38:43 door - Ariën -
Als ik na deze stukje code kijken, dan zou ik zeggen dat de Ajax reload wel werk zoals je zelf zeg al zegt. Uit ervaring met een div reload weet ik dat je vaak zit met een chache van je browser. Je zou daarom eens kunnen kijken naar een header die de chache leegt bij het reloaden.
Mijn excuses als deze stelling niet klopt. Zoals gezegd weet ik niet veel van Ajax af.
De bedoeling is dat hij de foto's van mijn twitterloader opnieuw laad zodat als er nieuwe tweets zijn dat hij deze automatisch om de zoveel seconden inlaad.
Om te voorkomen dat de pagina wordt gecached kan je in PHP deze header meegeven:
Code (php)
En wat je script verder doet, je moet zelf inbouwen dat hij de tweets ophaalt. Daar zijn wel een hoop PHP-libraries voor.
Gewijzigd op 26/09/2012 14:45:29 door - Ariën -
waar plaats je dit stukje script in de header?
Maar wat ik mij nu wel afvraag eigenlijk.
Als je een div wilt reloaden dan betekend het in mijn ogen ook dat die div gevuld word door een include. Hoe zou je dan te werk moeten gaan? Want een header zou dan toch niet werken? Of zit ik er nu even naast.
Het lijkt niet de oplossing te zijn. Net getest maar zo gauw ik hem refresh in de browser komen er nieuwe tweets bij maar via de ajax oplossing niks ...
Bij het includen (bevoorbeeld van db-connectie opties naar je PHP-script) behoudt je altijd het pad naar waar het daadwerkelijke PHP-bestand staat.
Voor een dergelijk iets heb ikzelf een betere implementatie geschreven:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
loadItem();
function loadItem() {
$.ajax({
url: "script.php",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadItem();
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Er is een fout opgetreden:'+ xhr.status + ' '+ thrownError);
}
});
}
function loadItem() {
$.ajax({
url: "script.php",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadItem();
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Er is een fout opgetreden:'+ xhr.status + ' '+ thrownError);
}
});
}
Misschien kan je hier wat mee? Ik vind het beter werken dan load(), plus dat er foutafhandeling in zit.
SetInterval is overigens niet de beste werkwijze, deze kan na verloop van tijd zeer inefficient werken, maar hoe en wat mag iemand anders uitleggen in het verhaal: setTimeout vs. SetInterval, als ik het goed heb.
Gewijzigd op 26/09/2012 15:09:33 door - Ariën -
Waar plaats ik dit script boven aan of gewoon bij mijn div's?
Gewijzigd op 26/09/2012 15:24:38 door - Ariën -
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
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
<?
[code]<?php
include 'twitterfeed.php';
include 'twitterfeed2.php';
include 'followpict.php';
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<title>scriptie De effecten van The internet of things</title>
<link rel="stylesheet" media="all" href="style.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<?
include 'js/timer.js';
?>
<script>
loadItem();
function loadItem() {
$.ajax({
url: "twitterfeed.php",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadItem();
$('.photobox').fadeOut('fast').load('.photobox').fadeIn("fast");
}, 5000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Er is een fout opgetreden:'+ xhr.status + ' '+ thrownError);
}
});
}
</script>
</head>
<body>
?>
[code]<?php
include 'twitterfeed.php';
include 'twitterfeed2.php';
include 'followpict.php';
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<title>scriptie De effecten van The internet of things</title>
<link rel="stylesheet" media="all" href="style.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<?
include 'js/timer.js';
?>
<script>
loadItem();
function loadItem() {
$.ajax({
url: "twitterfeed.php",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadItem();
$('.photobox').fadeOut('fast').load('.photobox').fadeIn("fast");
}, 5000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Er is een fout opgetreden:'+ xhr.status + ' '+ thrownError);
}
});
}
</script>
</head>
<body>
?>
Dit is wat ik nu heb heb ik daar misschien iets verkeerd gedaan?
Gewijzigd op 26/09/2012 15:34:13 door Marco Hendriks
- Waar start je je jQuery??
- En waarom include je hier twitterfeed? Je weet dat je nu met AJAX doet?
Gewijzigd op 26/09/2012 16:09:44 door - Ariën -
Het gene dat ik zou willen is dat een script mijn PHP script bijv om de 30 sec reload
zodat alles dat nieuw is ingeladen word.
http://docs.jquery.com/How_jQuery_Works
Ik kan me niet voorstellen dat je die twitterfeed op je index.php wilt includeren. Dat hele script laad je al in via jQuery's AJAX.
Gewijzigd op 26/09/2012 16:12:28 door - Ariën -
Ik ken de Jquery basics. En als ik hem inlaad via het ajax script dn krijg ik een foutmelding.
Toevallig foutmelding 007?
Gewijzigd op 26/09/2012 16:19:15 door - Ariën -
Sorry dit is de error
Ik vermoed dat je daar je class moet includeren. Niet in je index.php
In de index laad ik de data in doormiddel van een loop die gekoppeld is aan de twitter class.