json retourneert foutmelding: SyntaxError: JSON.parse: unexpected character

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ama saril

ama saril

23/05/2013 16:07:55
Quote Anchor link
Hallo,

Ik ben op dit moment bezig om een simpel stukje te maken die een array met waarden ophaalt die JS vervolgens weer kan gebruiken om UI elementen mee te vullen. Ik maak de aanroep met ajax naar een php bestand die vervolgens de query uitvoert. Nu worden alle waarden goed opgehaald en er komen ook de juiste gegevens uit (dit had ik al eerder gechecked door te
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($stmt->fetchAll(PDO::FETCH_COLUMN, 0));
?>


Vervolgens maak ik van deze array een json string door gebruik te maken van json_encode
Dit retourneer ik vervolgens met.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
header('Content-Type: application/json');
echo json_encode($waarden);
?>


Nu wordt de string goed teruggestuurd (met firebug nagekeken) maar toch geeft mijn jquery ajax de melding:
SyntaxError: JSON.parse: unexpected character, als ik in firebug kijk zie ik gewoon dat de json correct wordt geretoerneerd alsvolgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
["variatiea","variatiec","variatiee","variatieg","variatiei","variatiek"]
?>


Dus voor zover ik kan zien moet deze json string gewoon valide zijn. Heeft iemand enig idee waar dit aan kan ligen? Ik heb al meerdere keren dit soort stukjes gemaakt en dat werkte altijd maar nu krijg ik ineens deze rare melding en ik heb echt geen idee waar dit aan ligt.

Heeft iemand enige suggesties waar ik moet zoeken? (Als ik meer code moet posten zal ik dat doen maar alle php doet wat ie moet doen en er is eigenlijk niet zo heel veel spannends aan)
Gewijzigd op 23/05/2013 16:10:46 door Ama saril
 
PHP hulp

PHP hulp

01/05/2024 22:30:13
 
Erwin H

Erwin H

23/05/2013 16:25:26
Quote Anchor link
Optie 1: roep de php pagina eens direct aan in je browser. Je krijgt dan de JSON string direct in je browser te zien. Krijg je dan meer te zien dan alleen die JSON string?
Optie 2: welke jquery functie gebruikt je om de ajax call te maken. Ik heb in het verleden enorm veel problemen gehad met de $.post() fucntie die om de een of andere manier nooit de json goed kon vertalen. Het zelf handmatig doen bleek de oplossing.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$.post('url', {action: 'iets'}, function(resJSON){
  var res = $.parseJSON(resJSON);
});
 
Ama saril

ama saril

23/05/2013 16:43:31
Quote Anchor link
Hoi Erwin,

Ik heb even jouw opties getst.
Optie1: Ik heb hem in de browser gestart en hij geeft de string correct weer (heb ook gecontroleerd op spaties ervoor of erachter en dergelijke)

De jquery functie die ik gebruik is $.ajax
Ik heb deze altijd gebruik heb dan ook mijn oude code simpelweg hergebruikt omdat het altijd werkte.
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
20
21
22
23
24
25
26
27
<?php
function getCats()
{
    var
getString = "functie=haalCats&key=abc&gebruikersnaam=cde";
    $.ajax(
    {

        type: "GET",
        data: getString,
        url: "./data/mainUi.php",
        dataType: "json",        
        success: function(data)
        {
            
            //var gegevens = data;            
            alert('succes');
            },

            error: function(jqXHR, textStatus, errorThrown)
            {

                alert('fout');
                alert(jqXHR);
                alert(textStatus);
                alert(errorThrown);
            }
            
        });    
}


?>


Zo ziet mijn call eruit. Ik heb dit al heel vaak gebruikt maar het is voor het eerst dat ie problemen heeft.
 
Erwin H

Erwin H

23/05/2013 16:48:49
Quote Anchor link
Dan nog even de vraag hoe je string er precies uitziet, als je die kan plaatsen.

Probeer ook eens de handmatige optie. Dus geef geen json als datatype mee maar text en converteer de data dan zelf via de $.parseJSON() functie. Dit zou geen bal moeten uitmaken.... maar was voor mij in het verleden de enige mogelijkheid om het correct door te krijgen.

Totslot, je kan ook gebruik proberen te maken van de functie $.getJSON(). Hoewel dit in feite ook weer hetzelfde is als wat je doet. Vreemde is echter dat soms de ene methode wel werkt en de andere niet.
 
Ama saril

ama saril

23/05/2013 16:59:42
Quote Anchor link
De string die wordt geechoed ziet er alsvolgt uit:
["variatiea","variatiec","variatiee","variatieg","variatiei","variatiek"]

Ik zal jou suggestie even proberen door txt te gebruiken als ik thuis ben, ik laat morgen wel weten hoe het is gelopen. Alvast bedankt.
Gewijzigd op 23/05/2013 17:02:50 door ama saril
 
Ama saril

ama saril

27/05/2013 09:55:13
Quote Anchor link
Voordat ik het vergeet. Ik was de volgende dag naar huis gegaan en toen ik weer terug was opnieuw geprobeerd. Om een hele vreemde reden deed ie het nu ineens wel. Heb geen idee waar het aan kan liggen. In ieder geval bedankt voor de suggesties :)
 
Elwin - Fratsloos

Elwin - Fratsloos

27/05/2013 10:33:02
Quote Anchor link
Mocht je ooit twijfelen aan je JSON-string, dan kan je op bijvoorbeeld http://json.parser.online.fr/ je string laten uitlezen.
Of je gebruikt Firebug waarin de JSON uitgelezen wordt in de console.
 



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.