Ana aika fom din, mai juyawa ya bayyana, kuma console ta ce an sami alama < da ba a zata ba a cikin JSON a matsayi 0. Shafin da kansa yana lodawa lafiya, shi ya sa tunanin farko shi ne a zargi mai nazari ko ramin. Yawanci babu ko daya daga cikinsu: aikawa wata bukata ce daban da lodin shafin, kuma ta dawo da wani abu wanda ba JSON ba ne. Yi aiki a cikin tsarin da burauza yake bayyana shi da gaske, domin amsoshi hudu masu yiwuwa suna bukatar gyare-gyare hudu daban-daban.

Mataki 1: kama aikawar da ta faru da gaske

Bude panel din Network kafin ka aika, saita log din ya rike bayanai a tsakanin kewayawa, sannan ka yi gwajin aikawa mara lahani a kan asusu da aka ba ka izinin amfani. Zabi bukatar da fom din da kansa ya fara, ba bukatar takardar shafin ba.

Yi hankali da matatun. Matatar XHR ko Fetch tana da sauki, amma idan tsarin har yanzu yana aika ta hanyar iframe boye ko fom da aka kirkira a lokaci guda, matatar za ta boye bukata daya tilo mai muhimmanci. Aika sau daya ba tare da matata ba tukuna ka ga abin da ya bayyana.

Domin bukatar da ka zaba, rubuta abubuwa shida kafin ka fassara komai: hanyar, cikakken URL tare da igiyar tambaya, matsayi, sarkar juyawa, Content-Type na amsar, da layukan farko na jiki. Jagorar panel din Network na Chrome DevTools ta kunshi ra’ayin Headers, Response da Initiator inda wadannan suke, kuma kwatankwacin paneldin a wasu burauza suna nuna wadannan filaye guda.

Mataki 2: tabbatar da ita ce bukatar da kake zato

Yawancin kurakurai na JSON da mamaki su ne kurakurai na hanya. Idan mai kula da aikawa ya jefa kuskure kafin ya kira preventDefault, burauza yana yin POST na fom na asali zuwa inda sifar action ta ce, kuma uwar garke ta amsa da cikakken shafin HTML. Mai kula ba ya gudana, saboda haka ba a taba neman JSON ba.

Kwatanta URL din da ke panel da URL din da JavaScript dinka ke kira. Nemi juyawa da ke karewa wani wuri, slash na karshe da ya bace ko ya wuce, rashin daidaiton hanya inda mai kula ke aika GET amma tashar karshe tana karbar POST, ko fom da ke aika zuwa hanya dangantaka daga shafin da ya koma. Bi sarkar juyawa har karshe ka lura da URL na karshe, ba na farko ba.

Sannan duba mai farawa. Idan bukatar ta zo daga kewayawar takarda ba daga script dinka ba, ka riga ka sami matsalar, kuma babu wani canji a mai nazarin amsa da zai taimaka.

Mataki 3: raba sakamakon zuwa rukuni hudu

Kowane sakamako yana cikin daya daga wadannan, kuma rukuni ne ke tantance inda za ka duba gaba.

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

Layukan tsakiya su ne wadanda mutane ke yin kuskuren ganewar asali, domin matsayi 200 ne. Shafin shiga da ake samu bayan juyawa amsa ce ta HTTP mai kyau kuma takardar JSON muguwar gaske. Nau’in abun ciki application/json ba ya gyara hakan: alama ce kawai, kuma jikin da aka yi wa alama ba daidai ba har yanzu ya kasa nazari. An toshe shiga shi ne layin da ke kama da bukata da ta kammala: panel din yana nuna matsayi, amma manufar asalin giciye tana rike jiki, saboda haka ga script din da ke kira ba shi da amfani kamar lokaci ya kare.

Layi na hudu yana da yawa kamar haka a tsoffin tarin PHP da tsarin aiki. Gargadin rashin amfani da aka buga kafin kayan da aka lullube yana haifar da jikin da babu mai nazarin JSON da zai karba, kuma sau da yawa wannan gargadin shi ne dukkan bayanin.

Mataki 4: karanta kuskuren mai nazari kamar yadda yake

Rubutun kuskuren yana ambaton harafin farko da ya karya nazarin, wanda yawanci ke gano rukuni ba tare da wani zato ba.

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

Jiki mara komai tare da 200 lamari ne na kansa: tashar karshe ta gudana, ba ta samar da komai ba, kuma wani abu a kasa ya dauke shi a matsayin nasara. Gazawar yarjejeniyar aikace-aikace ce ba ta jigila ba, kuma wurinta mataki na gaba ne ba proxy ba. Firefox da Safari suna fadin wadannan gazawa hudu da wani salon daban, saboda haka kwatanta a kan harafi ko jiki mara komai ba a kan igiyar daidai ba.

Mataki 5: gyara Layer din da shaidu ke nuni zuwa gare shi

Domin matsalar hanya, gyara bukatar: gyara action, hana mai kula faduwa, daidaita tashar karshe da hanyar, sannan sake gwadawa. Domin matsalar wakilci, gyara abin da ya haifar da jiki, ka gano dalilin da ya sa ake mayar da takardar kuskure inda ake tsammanin bayanai. Domin matsalar yarjejeniya, karanta ainihin tsarin da tsarin aiki ke tsammani domin sigar da kake gudanarwa, ka tsara amsar bisa ga shi maimakon sassauta abokin ciniki.

Amsar da aka toshe shiga tana bukatar wani zagaye na kanta, domin bukatar da kanta na iya zama daidai kuma jikin na iya rashin isa ga kodinka. Kwatanta Access-Control-Allow-Origin na amsar da ainihin Origin din da burauza ya aika, kuma ka tuna cewa wildcard ba ya cika bukata mai shaidu. Haɗa credentials: 'include' a abokin ciniki da Access-Control-Allow-Credentials: true a uwar garke, ka duba ko kiran ya yi amfani da yanayin no-cors, inda jiki mara bayyana shine sakamakon da aka rubuta ba kuskure ba.

Maye gurbin mai nazari da wani abu mai sauki shi ne gyaran daya da ya kamata a guje. Yin nazarin amsar a matsayin code, ko cire rubutu har sai an yi nazari, yana boye rashin daidaiton yarjejeniya kuma yana kara saman allura a musayar shiru. Haka kuma, duba matsayi dabam da jiki wajibi ne: 200 mai dauke da abin kuskure na matakin aikace-aikace ya zama ruwan dare a API da yawa kuma dole a kula da shi ta hanyar karanta kayan.

Lokacin da kake bukatar taimako daga wani, raba karamin rikodin — hanya, URL, matsayi, URL na karshe bayan juyawa, nau’in abun ciki na amsar, siffar jiki, da yarjejeniyar da ake tsammani — maimakon fitarwa danyen. Rijiyoyin cibiyar sadarwa suna dauke da cookies, tokens, igiyoyin tambaya da bayanan sirri da suka kasance a cikin fom, kuma mai tsaftacewa ta atomatik ba bita ba ce.

  • Kama bukatar ba tare da matata ba kafin ka canza kowane code.
  • Tabbatar da mai farawa shi ne script dinka kuma URL na karshe ita ce tashar karshenka.
  • Raba amsar kafin ka taba mai nazari.
  • Gyara hanya, shiga, wakilci ko yarjejeniya, kuma ba taba ta hanyar sassauta mai nazari ba.

Labarai masu alaƙa