D’Formula gëtt geschéckt, de Spinner erschéngt, an d’Konsole seet et gëtt en onerwaart Zeechen < am JSON op der Positioun 0. D’Säit selwer luede gutt, dofir ass den éischten Impuls de Parser oder den Tunnel ze beschëllegen. Meeschtens ass keen vun deenen zwee bedeelegt: d’Schécke ass eng aner Ufro wéi d’Luede vun der Säit, an et koum eppes zréck wat keen JSON ass. Schafft an der Rei, an där de Browser et wierklech verréit, well déi véier méiglech Äntwerten véier verschidde Korrekture verlaangen.

Schrëtt 1: déi Schéck festhalen déi wierklech geschitt ass

Maacht den Netzpanel op ier Dir schéckt, stellt de Log sou een datt Einträg iwwer Navigatiounen ewech erhalen bleiwen, a maacht duerno eng onschiedlech Testscheckung op engem Kont deen Dir benotze däerft. Wielt d’Ufro déi d’Formula selwer ausgeléist huet, net d’Dokumentufro vun der Säit.

Sidd virsiichteg mat Filteren. En XHR- oder Fetch-Filter ass bequem, awer wann de Kader weiderhi iwwer en verstoppten iframe oder eng dynamesch erstallte Formula schéckt, da verstoppt de Filter déi eenzeg Ufro déi wichteg ass. Schéckt éischt eng Kéier ouni Filter a kuckt wat erschéngt.

Fir déi gewielten Ufro schreift sechs Saachen op ier Dir eppes interpretéiert: d’Method, d’vollstänneg URL mat der Query-Zeechenketten, de Status, d’Kette vun Ëmleedungen, den Content-Type vun der Äntwert an déi éischt Zeilen vum Kierper. D’Referenz zum Netzpanel vun Chrome DevTools deckt d’Usiichte Headers, Response an Initiator of, wou dat steet, an déi entspriechend Panelen an anere Browser weisen déi selwecht Felder.

Schrëtt 2: bestätegt datt et d’Ufro ass déi Dir denkt

Eng iwwerraschend grouss Zuel vu JSON-Feeler sinn tatsächlech Routing-Feeler. Wann den Handler vum Schécken eng Ausnam werft ier en preventDefault opruffe kritt, mécht de Browser eng native Formula-POST op déi Adress déi am action-Attribut steet, an de Server äntwert mat enger kompletter HTML-Säit. Den Handler leeft ni, also gouf ni JSON ugefrot.

Vergläicht d’URL am Panel mat der URL déi Ären JavaScript opruffe kritt. Sicht no enger Ëmleedung déi soss anzwousch ophält, engem fehlenden oder iwwerflëssege Slash um Enn, engem Method-Mismatch wou den Handler GET schéckt an den Endpunkt POST unhëlt, oder enger Formula déi op en relativte Wee vun enger Säit schéckt déi geplënnert gouf. Verfollegt d’Kette vun Ëmleedungen bis zum Enn a notéiert d’endgülteg URL, net déi éischt.

Duerno kontrolléiert den Initiator. Wann d’Ufro aus enger Dokumentnavigatioun koum an net aus Ärem Skript, dann hutt Dir de Problem schonn fonnt, an et hëlleft keng Ännerung um Äntwertparser.

Schrëtt 3: d’Resultat a véier Kategorien astellen

All Resultat gehéiert genee zu enger dovun, an d’Kategorie decidéiert wou Dir duerno kuckt.

What you seeCategoryWhere to look
Request never finishes, TLS or connection errorNo usable responseEndpoint reachability, certificate, front-end timeout
Request completes, script gets an opaque failureAccess blockedCross-origin policy, credentials mode, missing response header
200 with an HTML body or a login formWrong representationRedirect, expired session, route fallback, error handler
Body begins with a notice then valid JSONWrong representationServer-side warning output before serialisation
Valid JSON, framework rejects itContract mismatchEnvelope shape, field names, value types

Déi mëttelst Zeilen sinn déi déi Leit falsch diagnostizéieren, well de Status 200 ass. Eng Umell-Säit déi een no enger Ëmleedung erreecht ass eng ganz gutt HTTP-Äntwert an en ganz schlecht JSON-Dokument. Den Inhaltstyp application/json reparéiert dat net: et ass just en Etikett, an e falsch etikettéierte Kierper léisst sech nach ëmmer net parsen. Zougang blockéiert ass déi Zeil déi wéi eng fäerdeg Ufro ausgesäit: de Panel weist e Status, awer d’Politik fir verschidden Hierkonft hält de Kierper zréck, dofir ass en fir d’Skript dat opruffe fir sou onbrauchbar wéi en Timeout.

Déi véiert Zeil ass grad esou heefeg op eelere PHP- a Kader-Stäck. Eng Warschnung iwwer Ofschafung déi virum kodéierte Belaaschtung gedréckt gëtt produzéiert e Kierper deen keen JSON-Parser unhëlt, an dacks ass déi Warschnung déi ganz Erklärung.

Schrëtt 4: liest de Parserfeeler wiertlech

Den Text vum Feeler nennt dat éischt Zeechen dat d’Parséierung gebrach huet, an dat erkennt meeschtens d’Kategorie ouni all Rotschléi.

Error text (Chrome/V8)What it means
Unexpected token < in JSON at position 0The body starts with markup: an HTML page or an error document
Unexpected end of JSON inputEmpty body, or the response was truncated
Unexpected token o in JSON at position 1You parsed something already parsed, typically an object rather than text
Unexpected token uThe body starts with the bare word undefined, usually an empty response rendered as a string

En eidele Kierper mat 200 ass en eegene Fall: den Endpunkt ass gelaf, huet näischt produzéiert, an eppes weider ënnen huet dat als Erfolleg geholl. Dat ass e Kontraktfeeler vun der Applikatioun an net vum Transport, an en héiert an den nächste Schrëtt, net an de Proxy. Firefox a Safari formuléieren déi selwecht véier Feeler anescht, dofir passt op d’Zeechen oder op den eidele Kierper a net op déi genee Zeechenketten.

Schrëtt 5: korrigéiert déi Schicht op déi d’Beweiser weisen

Bei engem Routingproblem korrigéiert d’Ufro: verbessert den action, verhënnert datt den Handler duerchfält, bréngt Endpunkt a Method an Iwwereneestimmung, an testet nach eng Kéier. Bei engem Duerstellungsproblem korrigéiert dat wat de Kierper produzéiert huet, a fënnt eraus firwat en Feelerdokument zréckkënnt wou Donnéeë erwaart goufen. Bei engem Kontraktproblem liest déi tatsächlech erwaart Struktur vum Kader fir d’Versioun déi Dir bedreift, a formt d’Äntwert do no amplaz de Client lass ze maachen.

Eng Äntwert mat blockéiertem Zougang brauch hiren eegenen Duerchgang, well d’Ufro selwer riichteg ka sinn an de Kierper Ären Code vläicht ni erreecht. Vergläicht den Access-Control-Allow-Origin vun der Äntwert mat dem geneeën Origin deen de Browser geschéckt huet, a denkt drun datt e Platzhalter keng Ufro mat Umellinformatiounen erfëllt. Paart credentials: 'include' um Client mat Access-Control-Allow-Credentials: true um Server, a kontrolléiert ob den Opruff de Modus no-cors benotzt huet, wou en unduerchsiichtege Kierper dat dokumentéiert Resultat ass an net e Feeler.

De Parser duerch eppes méi nokummescht ze ersetzen ass déi eenzeg Korrektur déi ee soll vermeiden. D’Äntwert als Code auszewäerten, oder Text ofzeschielen bis en sech parse léisst, verstoppt de Kontraktmismatch a bäit eng Ugriffsfläch derbäi am Austausch fir Stille. Genee sou muss de Status getrennt vum Kierper gepréift ginn: en 200 mat engem Feelerobjekt op Applikatiounsniveau ass a ville API normal a muss duerch Liese vun der Belaaschtung behandelt ginn.

Wann Dir Hëllef vun engem aneren braucht, deelt eng minimal Notiz — Method, URL, Status, endgülteg URL no Ëmleedungen, Inhaltstyp vun der Äntwert, Form vum Kierper an den erwaarten Kontrakt — amplaz vun engem roen Export. Netzwierkarchiver enthalen Cookies, Tokenen, Query-Zeechenketten an déi perséinlech Donnéeën déi an der Formula waren, an en automatesche Botzer ass keng Iwwerpréiwung.

  • Hält d’Ufro ouni Filter fest ier Dir irgende Code ännert.
  • Bestätegt datt den Initiator Äert Skript war an d’endgülteg URL Ären Endpunkt ass.
  • Klassifizéiert d’Äntwert ier Dir de Parser beréiert.
  • Korrigéiert Routing, Zougang, Duerstellung oder Kontrakt, an ni andeems Dir de Parser lass mécht.

Ähnlech Artikelen