Krijg simpele AJAX functie niet werkend
HTML
Code (php)
1
2
3
4
2
3
4
<ul>
<li>Totaal berichten<span class="badge tot_berichten"><?= $tot_berichten ?></span></li>
<li>Nieuwe berichten<span class="badge nw_berichten"><?= $nw_berichten ?></span></li>
</ul>
<li>Totaal berichten<span class="badge tot_berichten"><?= $tot_berichten ?></span></li>
<li>Nieuwe berichten<span class="badge nw_berichten"><?= $nw_berichten ?></span></li>
</ul>
Javascript:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function gebruikersAantallen(){
$.ajax({
type: "POST",
url: "/gebruikers/gebruikersAantallen",
dataType: 'json',
async: true,
cache: false,
timeout:50000,
success: function(data){
if ( data ) {
$(".tot_berichten").html(data.tot_berichten);
$(".nw_berichten").html(data.nw_berichten);
}
setTimeout(gebruikersAantallen, 10000);
}
});
};
gebruikersAantallen();
$.ajax({
type: "POST",
url: "/gebruikers/gebruikersAantallen",
dataType: 'json',
async: true,
cache: false,
timeout:50000,
success: function(data){
if ( data ) {
$(".tot_berichten").html(data.tot_berichten);
$(".nw_berichten").html(data.nw_berichten);
}
setTimeout(gebruikersAantallen, 10000);
}
});
};
gebruikersAantallen();
Controller gebruikersAantallen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public function gebruikersAantallenAction()
{
$gebruiker = $this->session->get('gebruiker');
$aantallen = $this->aantallen->get_profiel_aantallen($gebruiker);
if ($aantallen)
{
$data = array(
'tot_berichten' => $tot_berichten,
'nw_berichten' => $nw_berichten
);
header('Content-Type: application/json');
echo json_encode($data, JSON_FORCE_OBJECT);
}
exit();
}
{
$gebruiker = $this->session->get('gebruiker');
$aantallen = $this->aantallen->get_profiel_aantallen($gebruiker);
if ($aantallen)
{
$data = array(
'tot_berichten' => $tot_berichten,
'nw_berichten' => $nw_berichten
);
header('Content-Type: application/json');
echo json_encode($data, JSON_FORCE_OBJECT);
}
exit();
}
Maar op de een of andere manier krijg ik voore beide variabelen undefined. Ziet iemand wat ik fout doe. Bij voorbaat dank
Gewijzigd op 06/11/2016 14:56:03 door Donald Boers
console.log(data);
Ivo P op 06/11/2016 15:23:25:
wat krijg je als je op regel 10 van je javascript tussenvoegt:
console.log(data);
console.log(data);
Hoi Ivo. Hartelijk bedankt voor je reactie. Ik heb dat geprobeert en toen kreeg ik voor beide variabelen NULL als waarde terug. Vervolgens heb ik het met harde waardes geprobeerd, dus:
dan krijg ik geen fout en worden de juiste waardes weergegeven, hetgeen doet vermoeden dat er iets fout zou zijn met de queries. Maar als ik de betreffende queries rechtstreeks uitvoer in phpMyadmin probeer worden wel de juiste waardes weergegeven. Wat zou de reden kunnen zijn denk je?
Ergens lijkt de AJAX-request niet goed te werken. Heb je ook al gekeken in je browser bij alle requests, en wat er met die URL gebeurt? Kan zijn dat die stuit op een Error 500?
Gewijzigd op 06/11/2016 20:25:40 door - Ariën -
- Ariën - op 06/11/2016 20:24:39:
Werkt /gebruikers/gebruikersAantallen uberhaupt wel goed in je browser?
Ergens lijkt de AJAX-request niet goed te werken. Heb je ook al gekeken in je browser bij alle requests, en wat er met die URL gebeurt? Kan zijn dat die stuit op een Error 500?
Ergens lijkt de AJAX-request niet goed te werken. Heb je ook al gekeken in je browser bij alle requests, en wat er met die URL gebeurt? Kan zijn dat die stuit op een Error 500?
Het blijkt dat ik een illigal string offet krijg op de volgende waarde
Code (php)
1
2
2
$gebruiker_credits = $this->aantallen->get_credits($gebruiker);
$credits = $gebruiker_credits['credits'];
$credits = $gebruiker_credits['credits'];
Code (php)
1
Warning: Illegal string offset 'credits' in C:\.......\private\includes\classes\Controller\gebruikers\Page.php
Dit is de betreffende query:
Wat zit er volgens print_r in $gebruiker_credits?
- Ariën - op 06/11/2016 21:21:47:
Wat zit er volgens print_r in $gebruiker_credits?
Hoi Ariën. Bedankt voor je reactie. Ik had als test bij een gebruiker 30 credits toegevoegd. Toen kreeg ik die Illegal string offset. Ik heb het aantal zojuist handmatig veranderd in 5 en dan is alles goed. Waar ligt dat aan?
Maar, wat zit er in die array?
- Ariën - op 06/11/2016 21:39:58:
Maar, wat zit er in die array?
@ Ariën. Nogmaals bedankt voor de reactie. Blijkbaar zat de fout nog in het cache. Want nadat ik alles een keer van de remote erver had verwijderd en nogmaals geupload werkt alles nu prima. Dank je nogmaals voor de input
Om caching, en dan met name in IE te voorkomen, voeg ik aan de url meestal een random waarde toe
iets als
url: '/some/url/' + Math.random(),
*check syntax even
Zoals je zelf al zegt:
Quote:
Vervolgens heb ik het met harde waardes geprobeerd, ..., dan krijg ik geen fout en worden de juiste waardes weergegeven
Waar rook is is vuur?