JSON-sisendi ootamatu lõpp

Unexpected End Json Input



Äriloogika on järgmine:

1, esipaneeli ajax kutsub taustakontrolleri meetodit, kontroller kutsub välist http-liidest, kapseldab objekti HttpURLConnection kutsemeetodi. Praegu pole peer-liides lõpule viidud, nii et kohalik autoriliides saab http-päringu töötlemise ja naaseb. Esilehel on alati teada:



SyntaxError: Unexpected end of JSON input at parse () at Ut (jquery-3.3.1.min.js:2) at k (jquery-3.3.1.min.js:2) at XMLHttpRequest. (jquery-3.3.1.min.js:2) at Object.send (jquery-3.3.1.min.js:2) at Function.ajax (jquery-3.3.1.min.js:2) at findWorkOrderInfo (initGroup.action?userId=402880e92db726b5012db729f65f0001&groupId=403880e92db726b5012db729f65f0002&chatId=297e60f264f472170164f501db7d038e:66) at HTMLImageElement.onclick (initGroup.action?userId=402880e92db726b5012db729f65f0001&groupId=403880e92db726b5012db729f65f0002&chatId=297e60f264f472170164f501db7d038e:135)

Esiosa kood on umbes järgmine:



$.ajax({ url : url, data : data, dataType : 'json', type : 'POST', async:false, success : function(obj) { }, error:function(data,type,err){ console.log(data) console.log(type) console.log(err) } })

Pärast mitu korda kontrollimist pole probleemi, põhimõtteliselt võib otsustada, et andmed tagastatakse taustal.



1. Nüüd käivitage siluri taustkood. Esiteks ei vasta vea kohaselt splaissingu json-string vormingule. Seetõttu kopeeritakse tulemuste string välja ja kontrollitakse return-lauses ning probleemi ei leita.

2, siis kommenteeritakse koodi, ainult avaldus, mis tagastab jsoni stringi, tagastab tulemuse otse, esiotsa leht on parsitud õigesti, seega kahtlustatakse, et töötlemisloogikas on probleem.

3, probleem on peamiselt keskendunud välise liidese üleskutsele andmete tagastamiseks, kommenteerige selle koodi osa, tagastage fikseeritud tulemus, kasutajaliides on parsitud õigesti, nii et määrake kõne liidese probleem.



4, kuna tõrge on JSON-i sisendi ootamatu lõpp, kahtlustage, kas see on päringu päise seadmise probleem, kuid välise liidese taotlemisel määratud sisutüüp on tõepoolest rakendus / json charset = UTF-8 ja seejärel kontrollige kapseldatud liidese helistamismeetod Kommenteerige samm-sammult probleemi leidmiseks test. HttpURLConnection objekt kutsub meetodi getInputStream (). Kuna see meetod on tegelikult päringu saatmise meetod, hakkab mõtlema, kas päringuobjektiga või vastuseobjektiga on probleeme.

5, kuna testimisliides andis tulemuse, kasutades meetodit response.getWriter () .println () tagastab stringi ja silumine näeb tulemusi tagastatult probleemideta. Kahtlege, kas vastusobjekti mõnes atribuudis on probleeme, ja võrrelge siis välises liideses olevat vastusobjekti silumisprotsessis juhuslikult kontrolleri meetodi vastusega ajax ja leidke, et vastusobjekti ID on sama . . . See probleem on põhimõtteliselt leitud, me teame, et päring võib vastata ainult vastusele, see tähendab, et vastuse objekti saab kasutada ainult üks kord, sest ma kasutan välise liidese helistamisel vastuse objekti, põhjustades vastuse tagastamise ajax ja seejärel vastust kasutades. Objekt on korrast ära. Siis leidsin, et minu kirjutatud testliides ja ajaxi poolt kutsutud meetodid on kontrollerite klassis, mistõttu nad kasutavad sama vastuse objekti.

6, siin on probleem põhimõtteliselt selge, testliides on kirjutatud uude kontrolleriklassi, nii et ajax-kõne meetod ja väline liides pole kontrolleriklassis, kui välisele liidesele helistatakse uuesti taustal Kasutage uut vastuse objekti , hankige tulemus ja tagastage seejärel tulemus algse vastuse objekti kaudu kasutajaliidesesse, test on edukas. . .

Siin on ka teie enda jaoks auk ja hiljem pole peer-liides veel lõpule jõudnud. Kui kirjutate liidest testimiseks, pidage meeles, et ärge olge laisk ja klassis kirjutatud helistaja, võib-olla kasutab sama vastust kahes kõnes Objektid, mis põhjustada tuvastamatuid vigu. . .