Foomka AJAX wuxuu filayaa JSON laakiin wuxuu qaataa HTML: si tallaabo tallaabo ah u baar jawaabta
Jawaabta 200 ma aha caddayn in ay JSON tahay. Raac guddiga Shabakadda tallaabo tallaabo oo kala sooc guul-darrooyinka gaadiidka, matalaadda iyo heshiiska.
Foomka waa la diraa, wareegtadu way soo baxdaa, konsolka-na wuxuu leeyahay calaamad < oo aan la filaynin ayaa ku jirta JSON oo ku taal booska 0. Bogga laftiisu si fiican ayuu u soo degaa, taasina waa sababta fikradda koowaad ay tahay in la eedeeyo falanqeeyaha ama tunnelka. Badanaa midkoodna lama lug laha: dirista waa codsi ka duwan soo dejinta bogga, waxaana soo noqday wax aan JSON ahayn. Ka shaqee sida ay browserku run ahaantii u muujiso, maxaa yeelay afarta jawaab ee suurtogalka ah waxay u baahan yihiin afar hagaajin oo kala duwan.
Tallaabo 1: qabta dirista dhab ahaantii dhacday
Fur guddiga Shabakadda ka hor intaadan dirin, dhig diiwaanka si uu u hayo gelitaannada inta lagu jiro socodka, kadibna samee hal tijaabo diris oo aan waxyeello lahayn akoonka lagu oggolaaday inaad isticmaasho. Dooro codsiga uu foomku isagu bilaabay, ee ma aha codsiga dukumeentiga bogga.
Ka taxaddar shaandhaynta. Shaandhada XHR ama Fetch way fudud dahay, laakiin haddii qaabku weli u dirayo iyada oo loo marayo iframe qarsoon ama foom si firfircoon loo sameeyay, shaandhadu waxay qarin doontaa codsiga kaliya ee muhiimka ah. Marka hore dir hal mar iyada oo aan shaandho lahayn oo eeg waxa soo baxay.
Codsiga la doortay, qor lix waxyaabood ka hor wax tarjumaad ah: habka, URL buuxa oo ay ku jirto xarigga su aasha, xaaladda, silsiladda dib u wareejinta, Content-Type-ka jawaabta, iyo sadarrada ugu horreeya ee jidhka. Tixraaca guddiga Shabakadda ee Chrome DevTools wuxuu daboolaa aragtiyada Headers, Response iyo Initiator halka ay kuwani ku yaalliin, guddiyada la mid ah ee browsers kale waxay muujiyaan isla goobaha.
Tallaabo 2: xaqiiji inuu yahay codsiga aad ka fikrayso
Tiro la yaab leh oo khaladaad JSON ah ayaa dhab ahaantii ah khaladaad dariiqa. Haddii maamulaha diristu tuuro ka-reeb ka hor inta uusan wicin preventDefault, browserku wuxuu sameeyaa POST foom asli ah ciwaanka uu sheegayo astaanta action, serverkuna wuxuu ku jawaabaa bog HTML buuxa. Maamuluhu waligiis ma shaqeeyo, markaa JSON waligiis lama codsan.
Isbarbar dhig URL-ka guddiga iyo URL-ka uu JavaScript-kaagu waco. Raadi dib u wareejin ku dhammaata meel kale, xariijin dambe oo maqan ama dheeraad ah, is-khalladeyn hab, ama foom u diraaya waddo qaraabo ah oo ka timaadda bog guuray. Raac silsiladda dib u wareejinta ilaa dhammaadka oo qor URL-ka ugu dambeeya, ee ma aha kan koowaad.
Kadib hubi bilowga. Haddii codsigu ka yimid socodka dukumeentiga ee aan ka iman skriptkaaga, waad heshay dhibaatada, waxna beddelaad ah falanqeeyaha jawaabtu ma caawin doonto.
Tallaabo 3: u kala qaybi natiijada afar qaybood
Natiijo kastaa waxay ku dhacdaa mid ka mid ah kuwaan, qaybuna waxay go aamisaa halka aad ka eegto xiga.
| What you see | Category | Where to look |
|---|---|---|
| Request never finishes, TLS or connection error | No usable response | Endpoint reachability, certificate, front-end timeout |
| Request completes, script gets an opaque failure | Access blocked | Cross-origin policy, credentials mode, missing response header |
| 200 with an HTML body or a login form | Wrong representation | Redirect, expired session, route fallback, error handler |
| Body begins with a notice then valid JSON | Wrong representation | Server-side warning output before serialisation |
| Valid JSON, framework rejects it | Contract mismatch | Envelope shape, field names, value types |
Safarrada dhexe waa kuwa dadku si khaldan u ogaada, maxaa yeelay xaaladdu waa 200. Bogga gelitaanka ee la gaaro dib u wareejin kadib waa jawaab HTTP aad u fiican iyo dukumeenti JSON aad u xun. Nooca nuxurka application/json ma hagaajiyo taas: waa calaamad oo keliya, jidhka calaamad qaldan lehna wali lama falanqayn karo. Gelitaan la xayiray waa safka u eg codsi dhammaaday: guddigu wuxuu muujiyaa xaalad, laakiin siyaasadda asal ee isdhaafka ah ayaa haysta jidhka, markaa skriptka wacaya waxay u tahay mid aan faa iido lahayn sida waqtiga dhammaadkiisa.
Safka afraad sidoo kale waa caadi xirmooyinka PHP iyo qaababka duugga ah. Digniin ku saabsan duugoobidda oo la daabacay ka hor culeyska la kooday waxay soo saartaa jidh aan falanqeeye JSON waligiis aqbali doonin, badanaana digniintaas ayaa ah sharraxaadda oo dhan.
Tallaabo 4: akhri khaladka falanqeeyaha si macno leh
Qoraalka khaladku wuxuu magacaabaa xarafka ugu horreeya ee jabiyay falanqaynta, taasina badanaa waxay aqoonsataa qaybta iyada oo aan wax mala-awaal ah lahayn.
| Error text (Chrome/V8) | What it means |
|---|---|
| Unexpected token < in JSON at position 0 | The body starts with markup: an HTML page or an error document |
| Unexpected end of JSON input | Empty body, or the response was truncated |
| Unexpected token o in JSON at position 1 | You parsed something already parsed, typically an object rather than text |
| Unexpected token u | The body starts with the bare word undefined, usually an empty response rendered as a string |
Jidh madhan oo 200 leh waa kiis u gaar ah: barta dhammaadka way shaqeysay, waxba ma soo saarin, waxna ka hooseeya ayaa u qaatay guul. Taasi waa guul-darro heshiiska barnaamijka ee ma aha gaadiidka, meesheeduna waa tallaabada xigta ee ma aha proxy. Firefox iyo Safari waxay isla afartaas guul-darro si kale u sheegaan, markaa ku habee xarafka ama jidhka madhan ee ma aha xarigga saxda ah.
Tallaabo 5: hagaaji lakabka ay caddayntu tilmaamayso
Dhibaatada dariiqa, hagaaji codsiga: sax action, ka hor istaag maamulaha inuu dhaco, iswaafaji barta dhammaadka iyo habka, kadibna mar kale tijaabi. Dhibaatada matalaadda, hagaaji waxa soo saaray jidhka, oo ogaado sababta dukumeenti khalad ah loogu soo celiyo meesha xogta la filayay. Dhibaatada heshiiska, akhri qaabka dhabta ah ee la filayo ee qaabka ee nooca aad ordaysato, oo u qaabee jawaabta sidaas halkii aad ka dabcin lahayd macmiilka.
Jawaabta gelitaanku xayiray waxay u baahan tahay wareeg u gaar ah, maxaa yeelay codsiga laftiisu wuu saxnaan karaa jidhkuna marnaba ma gaari karo koodkaaga. Isbarbar dhig Access-Control-Allow-Origin-ka jawaabta iyo Origin-ka saxda ah ee uu browserku diray, oo xusuuso in calaamadda guud aysan buuxin codsi leh aqoonsi. Isku xir credentials: 'include' macmiilka iyo Access-Control-Allow-Credentials: true serverka, oo hubi haddii wicitaanku isticmaalay habka no-cors, halkaas oo jidh aan caddayn uu yahay natiijo la diiwaangeliyay ee ma aha cilad.
Beddelidda falanqeeyaha wax aan ka nugul waxay tahay hagaajinta kaliya ee la iska ilaaliyo. Qiimeynta jawaabta sida kood, ama ka-bixista qoraalka ilaa la falanqayn karo, waxay qarinaysaa is-khalladeynta heshiiska waxayna ku daraysaa dusha duritaan beddelka aamusnaanta. Sidoo kale, xaaladda waa in si gooni ah loo hubiyo jidhka: 200 oo sidata shay khalad heer barnaamij ah waa caadi API-yo badan waana in lagu maareeyo akhrinta culeyska.
Marka aad u baahato caawimaad qof kale, la wadaag diiwaan ugu yar — habka, URL, xaaladda, URL-ka ugu dambeeya dib u wareejinno kadib, nooca nuxurka jawaabta, qaabka jidhka iyo heshiiska la filayay — halkii aad ka bixin lahayd dhoofin cayriin ah. Kaydka shabakaddu waxay ka kooban yihiin cookies, tokens, xargaha su aalaha iyo xogta gaarka ah ee foomka ku jirtay, nadiifiyaha otomaatiguna ma aha dib u eegis.
- Qabo codsiga iyada oo aan shaandho lahayn ka hor intaadan beddelin kood kasta.
- Xaqiiji in bilowgu ahaa skriptkaaga iyo in URL-ka ugu dambeeyu uu yahay bartaada dhammaadka.
- Kala qaybi jawaabta ka hor intaadan taaban falanqeeyaha.
- Hagaaji dariiqa, gelitaanka, matalaadda ama heshiiska, marnabana adigoo dabcinaya falanqeeyaha.