Krijg simpele AJAX functie niet werkend

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

06/11/2016 14:53:43
Quote Anchor link
Ik heb een simpele AJAX functie waarmee ik verschillende gegevens realtime aan een gebruiker wil tonen zoals aantal nieuwe berichten etc. Dit is wat ik zo ver heb:

HTML
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Javascript:
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
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();


Controller gebruikersAantallen
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
    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();
        
    }

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
 
PHP hulp

PHP hulp

23/11/2024 19:52:27
 
Ivo P

Ivo P

06/11/2016 15:23:25
Quote Anchor link
wat krijg je als je op regel 10 van je javascript tussenvoegt:

console.log(data);
 
Donald Boers

Donald Boers

06/11/2016 20:12:22
Quote Anchor link
Ivo P op 06/11/2016 15:23:25:
wat krijg je als je op regel 10 van je javascript tussenvoegt:

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$data = array(
    'tot_berichten' => 50,
    'nw_berichten'  => 10
);

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?
 
- Ariën  -
Beheerder

- Ariën -

06/11/2016 20:24:39
Quote Anchor link
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?
Gewijzigd op 06/11/2016 20:25:40 door - Ariën -
 
Donald Boers

Donald Boers

06/11/2016 21:11:22
Quote Anchor link
- 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?

Het blijkt dat ik een illigal string offet krijg op de volgende waarde

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$gebruiker_credits  =   $this->aantallen->get_credits($gebruiker);
$credits            =   $gebruiker_credits['credits'];


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: Illegal string offset 'credits' in C:\.......\private\includes\classes\Controller\gebruikers\Page.php


Dit is de betreffende query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
    public function get_credits($gebruiker)
    {
        $sql = "SELECT `credits`
                  FROM `gebruiker_credits`
                 WHERE `gebruiker_id` = ?";
                
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($gebruiker));
        
        return $stmt->fetch();                                  
    }
 
- Ariën  -
Beheerder

- Ariën -

06/11/2016 21:21:47
Quote Anchor link
Wat zit er volgens print_r in $gebruiker_credits?
 
Donald Boers

Donald Boers

06/11/2016 21:28:45
Quote Anchor link
- 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?
 
- Ariën  -
Beheerder

- Ariën -

06/11/2016 21:39:58
Quote Anchor link
Maar, wat zit er in die array?
 
Donald Boers

Donald Boers

06/11/2016 22:04:45
Quote Anchor link
- 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
 
Ivo P

Ivo P

06/11/2016 22:26:59
Quote Anchor link
Het lijkt erop dat je data ophaalt. Een GET request lijkt dan meer op zijn plaats.

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
 
Thomas van den Heuvel

Thomas van den Heuvel

07/11/2016 14:11:54
Quote Anchor link
Waar komen in je PHP fragment $tot_berichten en $nw_berichten vandaan?

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?
 



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.