Ifomu liyathunyelwa, isijikelezisi siyavela, futhi ikhonsoli ithi kunophawu < olungalindelekile ku-JSON endaweni engu-0. Ikhasi ngokwalo lilanda kahle, yingakho umcabango wokuqala uwukusola isihlukanisi noma umhubhe. Ngokuvamile akekho kubo ababili ohilelekile: ukuthumela kuyisicelo esihlukile ekulandeni ikhasi, futhi kubuye nokuthile okungewona i-JSON. Sebenza ngokulandelana okukhombisa ngakho isiphequluli ngempela, ngoba izimpendulo ezine ezingaba khona zidinga izilungiso ezine ezihlukile.

Isigaba 1: bamba ukuthumela okwenzeka ngempela

Vula iphaneli yeNethiweki ngaphambi kokuthumela, setha irekhodi ukuthi ligcine amangeno phakathi kokuhamba, bese wenza ukuthumela kokuhlola okungenabungozi ku-akhawunti oyivunyelwe ukuyisebenzisa. Khetha isicelo esiqalwe yifomu ngokwalo, hhayi isicelo sedokhumenti yekhasi.

Qaphela izihlungi. Isihlungi se-XHR noma se-Fetch silula, kodwa uma uhlaka lusathumela nge-iframe efihliwe noma ngefomu elakhiwe ngokuguqukayo, isihlungi sizofihla isicelo esisodwa esibalulekile. Thumela kanye ngaphandle kwesihlungi kuqala bese ubona okwavela.

Ngesicelo esikhethiwe, bhala izinto eziyisithupha ngaphambi kwanoma yikuphi ukuchaza: indlela, i-URL ephelele enomucu wemibuzo, isimo, uchungechunge lokudlulisela, i-Content-Type yempendulo, nemigqa yokuqala yomzimba. Incwadi yephaneli yeNethiweki ye-Chrome DevTools ihlanganisa ukubuka kwe-Headers, Response ne-Initiator lapho lezi zinto zikhona, futhi amaphaneli afanayo kwezinye iziphequluli akhombisa izinkambu ezifanayo.

Isigaba 2: qinisekisa ukuthi yisicelo osicabangayo

Inani elimangazayo lamaphutha e-JSON empeleni amaphutha okuhambisa. Uma isiphathi sokuthumela siphonsa okuhlukile ngaphambi kokuthi sibize i-preventDefault, isiphequluli senza i-POST yefomu yemvelo iye ekhelini elishiwo isici se-action, futhi iseva iphendula ngekhasi le-HTML eliphelele. Isiphathi asikaze sisebenze, ngakho i-JSON ayikaze icelwe.

Qhathanisa i-URL ekupheleni ne-URL ebizwa yi-JavaScript yakho. Funa ukudlulisela okuphela kwenye indawo, i-slash yokugcina engekho noma eyeqile, ukungafani kwendlela, noma ifomu elithumela endleleni ehlobene lisuka ekhasini elisusiwe. Landela uchungechunge lokudlulisela kuze kube sekupheleni bese ubhala i-URL yokugcina, hhayi eyokuqala.

Bese uhlola umqalisi. Uma isicelo sivela ekuhambeni kwedokhumenti hhayi kusikripthi sakho, usutholile inkinga, futhi akukho shintsho kusihlukanisi sempendulo esizosiza.

Isigaba 3: hlukanisa umphumela ngezigaba ezine

Umphumela ngamunye ungaphansi kwesinye sa lezi ngqo, futhi isigaba sinquma ukuthi ubheka kuphi ngokulandelayo.

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

Imigqa ephakathi yiyona abantu abayihlola kabi, ngoba isimo singu-200. Ikhasi lokungena elifinyelelwa ngemva kokudlulisela liyimpendulo ye-HTTP enhle ngokuphelele kanye nedokhumenti ye-JSON embi kakhulu. Uhlobo lokuqukethwe i-application/json akukulungisi lokho: kuwumaka nje, futhi umzimba omakwe kabi awukwazi ukuhlaziywa. Ukufinyelela okuvinjiwe yiwona mugqa obukeka njengesicelo esiqediwe: iphaneli ikhombisa isimo, kodwa inqubomgomo yemithombo ehlukene ibamba umzimba, ngakho kusikripthi esibizayo kuwusize lutho njengokuphela kwesikhathi.

Umugqa wesine uvamile ngokufanayo ezinqwabeni ezindala ze-PHP nezahlaka. Isixwayiso sokungasasetshenziswa esinyatheliswa ngaphambi komthwalo obhalwe ngekhodi sikhiqiza umzimba okungekho sihlukanisi se-JSON esizowamukela, futhi ngokuvamile leso sixwayiso siyiyo yonke incazelo.

Isigaba 4: funda iphutha lesihlukanisi ngokwezwi nezwi

Umbhalo wephutha ubiza uhlamvu lokuqala olwephula ukuhlaziya, futhi lokho ngokuvamile kukhombisa isigaba ngaphandle kokuqagela.

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

Umzimba ongenalutho one-200 uyindaba yawo: indawo yokugcina yasebenza, ayikhiqizanga lutho, futhi okuthile ngaphansi kwakuthatha njengempumelelo. Lokhu ukwehluleka kwesivumelwano sohlelo hhayi kokuthutha, futhi indawo yako isesigabeni esilandelayo hhayi ku-proxy. I-Firefox ne-Safari zisho lokho kwehluleka okune ngendlela ehlukile, ngakho qhathanisa ngohlamvu noma ngomzimba ongenalutho hhayi ngomucu oqondile.

Isigaba 5: lungisa ungqimba okukhomba kulo ubufakazi

Enkingeni yokuhambisa, lungisa isicelo: lungisa i-action, vimbela isiphathi ukuthi siwe, vumelanisa indawo yokugcina nendlela, bese uphinda uhlole. Enkingeni yokubonisa, lungisa okukhiqize umzimba, futhi uthole ukuthi kungani idokhumenti yephutha ibuyiswa lapho bekulindelekile idatha. Enkingeni yesivumelwano, funda isakhiwo sangempela esilindelwe uhlaka kunguqulo oyisebenzisayo, futhi akhe impendulo ngokuhambisana nayo esikhundleni sokukhulula iklayenti.

Impendulo enokufinyelela okuvinjiwe idinga umjikelezo wayo, ngoba isicelo ngokwaso singase silunge, futhi umzimba ungase ungafinyeleli kukhodi yakho. Qhathanisa i-Access-Control-Allow-Origin yempendulo ne-Origin eqondile ethunyelwe isiphequluli, futhi khumbula ukuthi umaka wamahhala awukwanelisi isicelo esinezifakazelo. Hlanganisa credentials: 'include' kuklayenti ne-Access-Control-Allow-Credentials: true kuseva, futhi uhlole ukuthi ubizo lusebenzise imodi ye-no-cors, lapho umzimba ongabonakali kuwumphumela obhaliwe hhayi isiphambeko.

Ukufaka esikhundleni sesihlukanisi okuthile okubekezelela kakhulu ukulungiswa okuwukuphela kokufanele kugwenywe. Ukuhlola impendulo njengekhodi, noma ukuxebula umbhalo kuze kuhlaziywe, kufihla ukungafani kwesivumelwano futhi kunezela indawo yokujova njengokushintshana nokuthula. Ngokufanayo, isimo kufanele sihlolwe ngokwehlukile emzimbeni: u-200 ophethe into yephutha esezingabeni sohlelo uvamile kuma-API amaningi futhi kufanele usingathwe ngokufunda umthwalo.

Uma udinga usizo lomunye umuntu, yabelana ngerekhodi elincane — indlela, i-URL, isimo, i-URL yokugcina ngemva kokudlulisela, uhlobo lokuqukethwe kwempendulo, isimo somzimba kanye nesivumelwano esilindelekile — esikhundleni sokukhishwa okuluhlaza. Izingobo zomlando zenethiweki ziqukethe amakhukhi, amathokheni, imicu yemibuzo kanye nedatha yomuntu siqu eyayisefomini, futhi isihlanzi esizenzakalelayo asiwona umhlolo.

  • Bamba isicelo ngaphandle kwesihlungi ngaphambi kokushintsha noma yikuphi ikhodi.
  • Qinisekisa ukuthi umqalisi kwakuyisikripthi sakho nokuthi i-URL yokugcina iyindawo yakho yokugcina.
  • Hlukanisa impendulo ngezigaba ngaphambi kokuthinta isihlukanisi.
  • Lungisa ukuhambisa, ukufinyelela, ukubonisa noma isivumelwano, futhi hhayi ngokukhulula isihlukanisi.

Izihloko ezihlobene