Seoltar an fhoirm, tagann an rothlóir chun solais, agus deir an consól go bhfuil comhartha < gan choinne i JSON ag suíomh 0. Lódálann an leathanach féin go maith, agus sin an fáth gurb é an chéad chlaonadh an locht a chur ar an parsálaí nó ar an tollán. De ghnáth ní bhíonn ceachtar acu i gceist: is iarratas difriúil é an seoladh ná lódáil an leathanaigh, agus tháinig sé ar ais le rud nach JSON é. Oibrigh san ord a nochtann an brabhsálaí é i ndáiríre, mar teastaíonn ceithre cheartú éagsúla ó na ceithre fhreagra fhéideartha.

Céim 1: gabh an seoladh a tharla i ndáiríre

Oscail painéal an Líonra sula seolann tú, socraigh an log chun iontrálacha a choinneáil thar nascleanúint, agus ansin déan seoladh tástála neamhdhíobhálach amháin ar chuntas a bhfuil cead agat a úsáid. Roghnaigh an t-iarratas a chuir an fhoirm féin chun cinn, ní iarratas doiciméid an leathanaigh.

Bí cúramach le scagairí. Tá scagaire XHR nó Fetch áisiúil, ach má sheolann an creat fós trí iframe ceilte nó trí fhoirm a chruthaítear go dinimiciúil, ceilfidh an scagaire an t-aon iarratas atá tábhachtach. Seol uair amháin gan scagaire ar dtús agus féach cad a tháinig chun solais.

Don iarratas roghnaithe, scríobh sé rud síos sula ndéanann tú aon léirmhíniú: an modh, an URL iomlán leis an teaghrán iarratais, an stádas, an slabhra atreoraithe, an Content-Type sa fhreagra, agus chéad línte an chomhlachta. Clúdaíonn tagairt phainéal an Líonra i Chrome DevTools na radhairc Headers, Response agus Initiator ina bhfuil siad seo, agus taispeánann na painéil chomhionanna i mbrabhsálaithe eile na réimsí céanna.

Céim 2: deimhnigh gurb é an t-iarratas a cheapann tú

Is éard atá i gcuid mhaith de na hearráidí JSON i ndáiríre ná earraídí ródaithe. Má chaitheann láimhseálaí an tseolta eisceacht sula nglaonn sé ar preventDefault, déanann an brabhsálaí POST dúchasach foirm chuig an seoladh a deir an tréith action, agus freagraíonn an freastalaí le leathanach HTML iomlán. Ní ritheann an láimhseálaí choíche, mar sin níor iarradh JSON riamh.

Cuir URL an phainéil i gcomparáid leis an URL a ghlaonn do JavaScript. Féach le hatreorú a chríochnaíonn in áit eile, slaise dheireanach atá ar iarraidh nó barrachas, mí-oiriúint mhodha ina seolann an láimhseálaí GET agus ina nglacann an pointe deiridh le POST, nó foirm a sheolann chuig cosán coibhneasta ó leathanach a bhog. Lean an slabhra atreoraithe go dtí an deireadh agus tabhair faoi deara an URL deiridh, ní an chéad cheann.

Ansin seiceáil an tionscnóir. Má tháinig an t-iarratas ó nascleanúint doiciméid seachas ó do script, tá an fhadhb aimsithe agat cheana féin, agus ní chabhróidh aon athrú ar pharsálaí freagartha.

Céim 3: aicmigh an toradh i gceithre chatagóir

Baineann gach toradh le ceann amháin díobh seo go díreach, agus cinneann an chatagóir cá bhféachfaidh tú ansin.

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

Is iad na ríthe sa lár na cinn a ndéanann daoine mí-dhiagnóis orthu, mar is é 200 an stádas. Is freagra HTTP fíor-mhaith agus doiciméad JSON an-dona é leathanach sínithe isteach a shroichtear tar éis atreoraithe. Ní leigheasann an cineál ábhair application/json é sin: lipéad is ea é, agus teipeann ar chomhlacht atá mílipéadaithe fós ar pharsáil. Is é Tacaíocht bactha an ríthe a bhfuil cuma iarratais chríochnaithe air: taispeánann an painéal stádas, ach coinníonn beartas tras-fhoinse an comhlacht siar, mar sin don script a ghlaonn tá sé chomh neamhúsáideach le teorainn ama.

Tá an ceathrú ríthe chomh coitianta céanna ar shean-chruacha PHP agus creat. Cruthaíonn rabhadh dímheasa a chlóitear roimh an ualach ionchódaithe comhlacht nach nglacfaidh aon pharsálaí JSON leis, agus is minic gurb é an rabhadh sin an mhíniú ar fad.

Céim 4: léigh earraíd an pharsálaí go litriúil

Ainmníonn téacs na hearraíde an chéad charachtar a bhris an pharsáil, rud a aithníonn an chatagóir de ghnáth gan aon bhuille faoi thuairim.

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

Cás ann féin is ea comhlacht folamh le 200: rith an pointe deiridh, níor tháirg sé faic, agus ghlac rud éigin níos faide síos leis mar rath. Teip chonartha feidhmchláir is ea é sin, ní teip iompair, agus is sa chéad chéim eile atá a áit, ní sa seachfhreastalaí. Cuireann Firefox agus Safari na ceithre theip chéanna in iúl ar bhealach difriúil, mar sin déan meaitseáil ar an gcarachtar nó ar an gcomhlacht folamh seachas ar an teaghrán cruinn.

Céim 5: ceartaigh an tsraith a léiríonn an fhianaise

I gcás fadhb ródaithe, ceartaigh an t-iarratas: ceartaigh an action, cuir cosc ar an láimhseálaí titim tríd, ailínigh an pointe deiridh agus an modh, agus ath-thástáil. I gcás fadhb léirithe, ceartaigh an rud a tháirg an comhlacht, agus faigh amach cén fáth a bhfuil doiciméad earraíde á thabhairt ar ais san áit a raibh sonraí ag súil. I gcás fadhb conartha, léigh struchtúr iarbhír ionchasach an chreata don leagan atá á rith agat, agus cruthaigh an freagra de réir mar atá air seachas an cliant a scaoileadh.

Teastaíonn a bhealach féin ó fhreagra a bhfuil tacaíocht bactha aige, mar d’fhéadfadh an t-iarratas féin a bheith ceart agus d’fhéadfadh an comhlacht do chód a bhaint amach riamh. Cuir Access-Control-Allow-Origin an fhreagra i gcomparáid leis an Origin cruinn a sheol an brabhsálaí, agus cuimhnigh nach sásaíonn saorga iarratas a bhfuil dintiúirí aige. Péireáil credentials: 'include' ar an gcliant le Access-Control-Allow-Credentials: true ar an bhfreastalaí, agus seiceáil ar úsáid an glao mód no-cors, áit a bhfuil comhlacht teimhneach mar thoradh doiciméadaithe seachas mar locht.

Is é an parsálaí a mhalartú ar rud éigin ceadaitheach an t-aon cheartú ar cheart a sheachaint. Má dhéantar an freagra a mheas mar chód, nó téacs a scamhadh go dtí go ndéantar é a pharsáil, ceiltear an mhí-oiriúint chonartha agus cuirtear dromchla instealla leis mar mhalairt ar chiúnas. Mar an gcéanna, tá gá le stádas a sheiceáil ar leithligh ón gcomhlacht: tá 200 a iompraíonn réad earraíde ar leibhéal feidhmchláir normálta i gcuid mhaith API agus caithfear é a láimhseáil tríd an ualach a léamh.

Nuair a bheidh cabhair uait ó dhuine éigin eile, roinn taifead íosta — modh, URL, stádas, URL deiridh tar éis atreoruithe, cineál ábhair an fhreagra, cruth an chomhlachta agus an conradh ionchasach — seachas easpórtáil amh. Bíonn fianáin, comharthaí, teaghráin iarratais agus na sonraí pearsanta a bhí san fhoirm in airchiví líonra, agus ní léirmheas é glantóir uathoibríoch.

  • Gabh an t-iarratas gan scagaire sula n-athraíonn tú aon chód.
  • Deimhnigh gur do script a bhí sa tionscnóir agus gurb é do phointe deiridh an URL deiridh.
  • Aicmigh an freagra sula dteagmhálann tú leis an bparsálaí.
  • Ceartaigh ródú, rochtain, léiriú nó conradh, agus riamh tríd an bparsálaí a scaoileadh.

Ailt ghaolmhara