PHP script geeft JSON Parse error: Unrecognized token ‘<’ in

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • jaclang
  • Registratie: Oktober 2022
  • Laatst online: 10-11-2024
Mijn vraag
Waarom krijg ik bij het verzenden van data van mijn JavaScript naar een PHP-script steeds de foutmelding ‘JSON Parse error: Unrecognized token ‘<’’? Ondanks het instellen van de juiste headers en het uitschakelen van echo’s krijg ik nog steeds deze fout.

1. JavaScript-functie saveDataToDatabase(): Deze functie probeert een POST-verzoek te sturen naar de server en de response te parsen als JSON. Hier treedt de foutmelding op: Fout bij het parsen van JSON: SyntaxError: JSON Parse error: Unrecognized token '<'.
2. PHP-bestand save_data.php: Dit bestand is bedoeld om data te verwerken en een JSON-response terug te sturen. Echter, het lijkt erop dat er ongewenste output wordt teruggestuurd, zoals extra HTML of tekst, die niet als JSON geparsed kan worden.

Het kernprobleem is dat de JavaScript-functie een response ontvangt die niet geldig is als JSON. Dit betekent meestal dat de PHP-script iets terugstuurt dat niet in JSON-formaat is (bijvoorbeeld HTML). Dit veroorzaakt de foutmelding tijdens het parsen van de response in JavaScript.


Relevante software en hardware die ik gebruik
mijndomein.nl via plesk


Wat ik al gevonden of geprobeerd heb
.Deze stappen hebben we al ondernomen om de foutmelding op te lossen.
Het uitschakelen van echo’s in PHP: We hebben de echo-statements uitgeschakeld om te voorkomen dat extra HTML-output werd weergegeven, wat de JSON-response zou verstoren.
2. Instellen van de juiste headers: We hebben header('Content-Type: application/json'); toegevoegd om ervoor te zorgen dat de PHP-output als JSON wordt geretourneerd.
3. Debuggen van de JavaScript-functie: We hebben saveDataToDatabase() en saveRowData() gecontroleerd en geprobeerd om de JSON-response correct te parsen.
4. Gebruik van Postman: We hebben Postman gebruikt om te controleren of de serverresponse correct werd teruggestuurd bij een POST-verzoek, en we hebben de ruwe serverresponse bekeken.
5. Opzoeken van eventuele PHP-fouten: Door het toevoegen van ini_set('display_errors', 1); en error_reporting(E_ALL); hebben we geprobeerd om verborgen PHP-fouten te detecteren.
6. Handmatig parsen van JSON in JavaScript: We hebben .then(response => response.text()) gebruikt om de ruwe response te bekijken en vervolgens geprobeerd deze te parsen.
7. Controle van de PHP-structuur: We hebben gekeken naar de volledige PHP-code om te zorgen dat alleen een JSON-response wordt teruggestuurd zonder extra HTML-output.
8. Samenvoegen van JavaScript-bestanden: We hebben overwogen om de functies samen te voegen om mogelijke problemen met de aanroepen van verschillende bestanden uit te sluiten.

Alle reacties


Acties:
  • 0 Henk 'm!

  • jaspermeul
  • Registratie: Oktober 2007
  • Laatst online: 11:04
Zonder wat code maakt dit het wel heel moeilijk.
Wat voor return code krijg je van de server?
Wat is de ruwe response? Hoe ziet de parse functie eruit?

[ Voor 17% gewijzigd door jaspermeul op 10-11-2024 09:56 ]


Acties:
  • +2 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Dus zelfs je "wat hebben we geprobeerd" is ChatGPT-gegenereerd?

Het mooie van HTTP-calls vanuit je browser is dat je met een simpele F12 de debugtools kunt openen en de inhoud van request en response kunt bekijken.

Ga naar de Network-tab, bekijk wat de server terugstuurt en interpreteer dat zelf.

Of: wat zag je dan in Postman gebeuren, en wat doet je JavaScript in de browser anders?

[ Voor 13% gewijzigd door CodeCaster op 10-11-2024 09:57 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Falcon
  • Registratie: Februari 2000
  • Laatst online: 13:10

Falcon

DevOps/Q.A. Engineer

Ik vermoed dat je response in de 40X of 50X zit, deze komen terug met een niet JSON response.

"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:52
Ik zie heel veel "we hebben geprobeerd" maar niet wat dan de uitkomst was. En inderdaad, F12 dan zie je het waarschijnlijk zo.

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Je moet je JavaScript code beter schrijven met controles of dingen wel zijn zoals ze moeten zijn.
Iets in de trant van:

JavaScript:
1
2
3
4
5
6
7
8
9
10
fetch(url, options).then(response => {
    if (!response.ok) {
        return Promise.reject(new Error('Network response error: ' + response.status));
    }
    const ct = response.headers.get('Content-Type');
    if (!ct.startsWith('application/json')) {
        return Promise.reject(new Error(`Invalid Content-Type '${ct}' for url '${url}'`));
    }
    return response.json();
});

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nee @DJMaze, met blind gokken wordt dit een chat-GPT echokamer.

Het is aan de topicstarter om de daadwerkelijke json te tonen en hoe die geparset wordt.

En dat mag zonder chat-GPT nog meer te laten fantaseren, aub vooral laten zien wat je echt hebt. :)

{signature}


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Voutloos schreef op maandag 11 november 2024 @ 20:44:
Nee @DJMaze, met blind gokken wordt dit een chat-GPT echokamer.
Ik ga er vanuit dat GPT de code heeft geschreven, anders wist TS al hoe dit op te lossen.
Het staat immers allemaal in de Fetch 101

[ Voor 20% gewijzigd door DJMaze op 11-11-2024 20:59 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • +1 Henk 'm!

  • Oon
  • Registratie: Juni 2019
  • Niet online

Oon

Voutloos schreef op maandag 11 november 2024 @ 20:44:
Nee @DJMaze, met blind gokken wordt dit een chat-GPT echokamer.

Het is aan de topicstarter om de daadwerkelijke json te tonen en hoe die geparset wordt.

En dat mag zonder chat-GPT nog meer te laten fantaseren, aub vooral laten zien wat je echt hebt. :)
Maar goed, de helft van de startpost is dan ook al uitgepoept door ChatGPT, en TS laat daarmee zien 'samen met' ChatGPT (of Claude, of een willekeurige andere LLM) te hebben geprobeerd het op te lossen.
Niet zo heel vreemd om dan aan te nemen dat (een groot deel van) de code daar ook door is geschreven.

Acties:
  • +2 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dus omdat iemand geassisteerd wordt door een AI Assistent, mag alle logica de deur uit en moeten antwoorden enkel gokwerk zijn.

Chat-GPT komt al met 7 halve hengels aanzetten. Sommige hengels hebben aan beide kanten alleen maar een handvat, of geen visdraad. Foei taalmodel. In plaats van op basis van onze skills te sturen naar ‘hoe leer ik vissen’, is de logische conclusie dat het door blind een 8e of 9e kapotte hengel te kopieren wel lukt? :?

Voorlopig ga ik nog voor ouderwetse ‘wat heb je nu?’ wedervragen.

{signature}

Pagina: 1