Il-formola tintbagħat, l-indikatur jidher, u l-konsol tgħid li hemm sinjal < mhux mistenni fil-JSON fil-pożizzjoni 0. Il-paġna nnifisha tgħabbi tajjeb, u għalhekk l-ewwel xewqa hija li twaħħal il-ħtija fuq il-parser jew fuq il-mina. Normalment ħadd minnhom mhu involut: l-ibgħat huwa talba differenti mit-tagħbija tal-paġna, u ġie lura b’xi ħaġa li mhix JSON. Aħdem bl-ordni li biha l-browser verament jiżvelaha, għax l-erba tweġibiet possibbli jeħtieġu erba korrezzjonijiet differenti.

Pass 1: aqbad l-ibgħat li seħħ verament

Iftaħ il-pannell Netwerk qabel tibgħat, issettja r-reġistru biex iżomm id-dħul bejn in-navigazzjonijiet, imbagħad agħmel ibgħat ta esperiment bla ħsara fuq kont li int permess tuża. Agħżel it-talba li bdiet il-formola stess, mhux it-talba tad-dokument tal-paġna.

Oqgħod attent mill-filtri. Filtru XHR jew Fetch huwa komdu, imma jekk il-qafas għadu jibgħat permezz ta iframe moħbi jew formola maħluqa bmod dinamiku, il-filtru jaħbi l-unika talba li timporta. Ibgħat darba mingħajr filtru l-ewwel u ara x ħa joħroġ.

Għat-talba magħżula, iddokumenta sitt affarijiet qabel kull interpretazzjoni: il-metodu, l-URL sħiħ bl-istring tal-mistoqsija, l-istat, il-katina ta ridirezzjonijiet, il-Content-Type tar-risposta u l-ewwel linji tal-korp. Ir-referenza tal-pannell Netwerk ta Chrome DevTools tkopri l-veduti Headers, Response u Initiator fejn jinsabu dawn, u l-pannelli ekwivalenti fi browsers oħra juru l-istess oqsma.

Pass 2: ikkonferma li hija t-talba li taħseb

Numru sorprendenti ta żbalji JSON huma fil-fatt żbalji ta routig. Jekk il-handler tal-ibgħat iqajjem eċċezzjoni qabel ma jsejjaħ preventDefault, il-browser jagħmel POST nattiv tal-formola fl-indirizz li jgħid l-attribut action, u s-server iwieġeb bpaġna HTML sħiħa. Il-handler qatt ma jaħdem, allura l-JSON qatt ma ntalab.

Qabbel l-URL fil-pannell mal-URL li jsejjaħ il-JavaScript tiegħek. Fittex ridirezzjoni li tispiċċa band oħra, slash finali nieqes jew żejjed, nuqqas ta qbil fil-metodu fejn il-handler jibgħat GET u l-punt final jilqa POST, jew formola li tibgħat għal mogħdija relattiva minn paġna li ċċaqilqet. Segwi l-katina ta ridirezzjonijiet sat-tmiem u nnota l-URL finali, mhux l-ewwel wieħed.

Imbagħad iċċekkja l-bidwi. Jekk it-talba ġiet minn navigazzjoni tad-dokument u mhux mill-iskritt tiegħek, diġà sibt il-problema, u ebda bidla fil-parser tar-risposta ma tgħin.

Pass 3: ikklassifika r-riżultat f erba kategoriji

Kull riżultat jaqa f wieħed minn dawn biss, u l-kategorija tiddeċiedi fejn tħares wara.

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

Ir-ringieli tan-nofs huma dawk li n-nies jiddijanjostikaw ħażin, għax l-istat huwa 200. Paġna tad-dħul li tintlaħaq wara ridirezzjoni hija risposta HTTP tajba ħafna u dokument JSON ħażin ħafna. It-tip ta kontenut application/json ma jsewwix dan: huwa tikketta, u korp ittikkettat ħażin xorta ma jinqarax. Aċċess imblukkat hija r-ringiela li tidher bħal talba kompluta: il-pannell juri stat, imma l-politika tal-oriġini trasversali żżomm il-korp, allura għall-iskritt li jsejjaħ hija inutli daqs timeout.

Ir-raba ringiela hija daqstant komuni fuq stacks PHP u qafas eqdem. Twissija dwar skadenza stampata qabel il-piż ikkodifikat tipproduċi korp li ebda parser JSON ma jaċċetta, u spiss dik it-twissija hija l-ispjegazzjoni kollha.

Pass 4: aqra l-iżball tal-parser bmod litterali

It-test tal-iżball isemmi l-ewwel karattru li kisser il-qari, u dan normalment jidentifika l-kategorija mingħajr ebda raden.

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

Korp vojt bi 200 huwa każ tiegħu: il-punt final ħadem, ma pproduċa xejn, u xi ħaġa aktar l isfel ħadet dan bħala suċċess. Dan huwa falliment tal-kuntratt tal-applikazzjoni u mhux tat-trasport, u l-post tiegħu huwa fil-pass li jmiss, mhux fil-proxy. Firefox u Safari jfissru l-istess erba fallimenti bmod ieħor, allura qabbel fuq il-karattru jew fuq il-korp vojt u mhux fuq l-istring eżatt.

Pass 5: sewwi s-saff li tindika l-evidenza

Għal problema ta routig, sewwi t-talba: sewwi l-action, waqqaf lill-handler milli jaqa, allinja l-punt final u l-metodu, u erġa pprova. Għal problema ta rappreżentazzjoni, sewwi dak li pproduċa l-korp, u sib għaliex dokument ta żball jiġi rritornat fejn kienu mistennija data. Għal problema ta kuntratt, aqra l-istruttura reali mistennija tal-qafas għall-verżjoni li qed taħdem, u ifforma r-risposta skontha minflok ma tħoll il-klijent.

Risposta b’aċċess imblukkat teħtieġ dawra tagħha, għax it-talba nnifisha tista tkun korretta u l-korp jista qatt ma jasal għall-kodiċi tiegħek. Qabbel l-Access-Control-Allow-Origin tar-risposta mal-Origin eżatt li bagħat il-browser, u ftakar li wildcard ma jissodisfax talba b’kredenzjali. Par credentials: 'include' fuq il-klijent ma Access-Control-Allow-Credentials: true fuq is-server, u ċċekkja jekk is-sejħa użatx il-mod no-cors, fejn korp opak huwa r-riżultat dokumentat u mhux difett.

Li tissostitwixxi l-parser bxi ħaġa aktar tolleranti hija l-unika korrezzjoni li għandha tiġi evitata. Li tevalwa r-risposta bħala kodiċi, jew li tqaxxar it-test sakemm jinqara, taħbi n-nuqqas ta qbil tal-kuntratt u żżid wiċċ ta injezzjoni bi skambju għas-skiet. Bl-istess mod, l-istat għandu jiġi ċċekkjat separat mill-korp: 200 li jġorr oġġett ta żball fil-livell tal-applikazzjoni huwa normali f’ħafna API u għandu jiġi ttrattat billi tinqara l-piż.

Meta għandek bżonn l-għajnuna ta xi ħadd ieħor, aqsam rekord minimu — metodu, URL, stat, URL finali wara ridirezzjonijiet, tip ta kontenut tar-risposta, forma tal-korp u l-kuntratt mistenni — minflok esportazzjoni mhux maħduma. L-arkivji tan-netwerk fihom cookies, tokens, strings tal-mistoqsija u d-data personali li kienet fil-formola, u tindif awtomatiku mhuwiex reviżjoni.

  • Aqbad it-talba mingħajr filtru qabel ma tbiddel xi kodiċi.
  • Ikkonferma li l-bidwi kien l-iskritt tiegħek u li l-URL finali huwa l-punt final tiegħek.
  • Ikklassifika r-risposta qabel ma tmiss il-parser.
  • Sewwi r-routig, l-aċċess, ir-rappreżentazzjoni jew il-kuntratt, u qatt billi tħoll il-parser.

Artikli relatati