ਫਾਰਮ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ, ਸਪਿਨਰ ਦਿਸਦਾ ਹੈ, ਅਤੇ ਕੰਸੋਲ ਕਹਿੰਦਾ ਹੈ ਕਿ JSON ਵਿੱਚ ਸਥਾਨ 0 ਉੱਤੇ ਅਣਕਿਆਸਿਆ < ਚਿੰਨ੍ਹ ਹੈ। ਪੰਨਾ ਆਪਣੇ ਆਪ ਚੰਗੀ ਤਰ੍ਹਾਂ ਲੋਡ ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਪਹਿਲੀ ਪ੍ਰਵਿਰਤੀ ਪਾਰਸਰ ਜਾਂ ਟਨਲ ਨੂੰ ਦੋਸ਼ ਦੇਣਾ ਹੈ। ਆਮ ਤੌਰ ਉੱਤੇ ਦੋਹਾਂ ਵਿੱਚੋਂ ਕੋਈ ਸ਼ਾਮਲ ਨਹੀਂ ਹੁੰਦਾ: ਭੇਜਣਾ ਪੰਨਾ ਲੋਡ ਹੋਣ ਤੋਂ ਵੱਖਰੀ ਬੇਨਤੀ ਹੈ, ਅਤੇ ਇਹ JSON ਨਾ ਹੋਣ ਵਾਲੀ ਕਿਸੇ ਚੀਜ਼ ਨਾਲ ਵਾਪਸ ਆਈ। ਬਰਾਊਜ਼ਰ ਜਿਸ ਕ੍ਰਮ ਵਿੱਚ ਸੱਚਮੁੱਚ ਇਹ ਖੋਲ੍ਹਦਾ ਹੈ ਉਸੇ ਕ੍ਰਮ ਵਿੱਚ ਕੰਮ ਕਰੋ, ਕਿਉਂਕਿ ਚਾਰ ਸੰਭਾਵੀ ਜਵਾਬਾਂ ਲਈ ਚਾਰ ਵੱਖਰੀਆਂ ਸੁਧਾਈਆਂ ਲੋੜੀਂਦੀਆਂ ਹਨ।

ਕਦਮ 1: ਸੱਚਮੁੱਚ ਹੋਈ ਭੇਜਣਾ ਫੜੋ

ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਨੈੱਟਵਰਕ ਪੈਨਲ ਖੋਲ੍ਹੋ, ਨੈਵੀਗੇਸ਼ਨ ਦੌਰਾਨ ਐਂਟਰੀਆਂ ਸੰਭਾਲਣ ਲਈ ਲੌਗ ਸੈੱਟ ਕਰੋ, ਫਿਰ ਉਸ ਖਾਤੇ ਉੱਤੇ ਇੱਕ ਬੇਨੁਕਸਾਨ ਪਰੀਖਿਆ ਭੇਜੋ ਜਿਸ ਨੂੰ ਵਰਤਣ ਦੀ ਇਜਾਜ਼ਤ ਹੈ। ਪੰਨੇ ਦੀ ਦਸਤਾਵੇਜ਼ ਬੇਨਤੀ ਨਹੀਂ, ਫਾਰਮ ਨੇ ਆਪ ਸ਼ੁਰੂ ਕੀਤੀ ਬੇਨਤੀ ਚੁਣੋ।

ਫਿਲਟਰਾਂ ਨਾਲ ਸਾਵਧਾਨ ਰਹੋ। XHR ਜਾਂ Fetch ਫਿਲਟਰ ਸੁਵਿਧਾਜਨਕ ਹੈ, ਪਰ ਜੇ ਫਰੇਮਵਰਕ ਅਜੇ ਵੀ ਲੁਕੇ iframe ਜਾਂ ਗਤੀਸ਼ੀਲ ਬਣੇ ਫਾਰਮ ਰਾਹੀਂ ਭੇਜਦਾ ਹੈ, ਤਾਂ ਫਿਲਟਰ ਇੱਕੋ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਬੇਨਤੀ ਲੁਕਾ ਦੇਵੇਗਾ। ਪਹਿਲਾਂ ਫਿਲਟਰ ਤੋਂ ਬਿਨਾਂ ਇੱਕ ਵਾਰ ਭੇਜੋ ਅਤੇ ਵੇਖੋ ਕੀ ਆਇਆ।

ਚੁਣੀ ਬੇਨਤੀ ਲਈ ਕਿਸੇ ਵੀ ਵਿਆਖਿਆ ਤੋਂ ਪਹਿਲਾਂ ਛੇ ਗੱਲਾਂ ਲਿਖੋ: ਢੰਗ, ਕੁਐਰੀ ਸਟ੍ਰਿੰਗ ਸਮੇਤ ਪੂਰਾ URL, ਸਥਿਤੀ, ਰੀਡਾਇਰੈਕਟ ਲੜੀ, ਜਵਾਬ ਦਾ Content-Type, ਅਤੇ ਬਾਡੀ ਦੀਆਂ ਪਹਿਲੀਆਂ ਲਾਈਨਾਂ। Chrome DevTools ਦਾ ਨੈੱਟਵਰਕ ਪੈਨਲ ਸੰਦਰਭ ਉਹ Headers, Response ਤੇ Initiator ਦ੍ਰਿਸ਼ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਇਹ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਹੋਰ ਬਰਾਊਜ਼ਰਾਂ ਦੇ ਸਮਾਨ ਪੈਨਲ ਉਹੀ ਖੇਤਰ ਦਿਖਾਉਂਦੇ ਹਨ।

ਕਦਮ 2: ਪੱਕਾ ਕਰੋ ਕਿ ਇਹ ਤੁਹਾਡੀ ਸੋਚੀ ਬੇਨਤੀ ਹੈ

ਹੈਰਾਨੀਜਨਕ ਤੌਰ ਉੱਤੇ ਬਹੁਤ ਸਾਰੀਆਂ JSON ਗਲਤੀਆਂ ਅਸਲ ਵਿੱਚ ਰੂਟਿੰਗ ਗਲਤੀਆਂ ਹਨ। ਜੇ ਭੇਜਣ ਹੈਂਡਲਰ preventDefault ਬੁਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਗਲਤੀ ਸੁੱਟਦਾ ਹੈ, ਬਰਾਊਜ਼ਰ action ਗੁਣ ਵਿੱਚ ਲਿਖੇ ਪਤੇ ਉੱਤੇ ਮੂਲ ਫਾਰਮ POST ਕਰਦਾ ਹੈ, ਅਤੇ ਸਰਵਰ ਪੂਰੇ HTML ਪੰਨੇ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਹੈਂਡਲਰ ਕਦੇ ਨਹੀਂ ਚੱਲਦਾ, ਇਸ ਲਈ JSON ਕਦੇ ਨਹੀਂ ਮੰਗਿਆ ਗਿਆ।

ਪੈਨਲ ਦੇ URL ਦੀ ਤੁਲਨਾ ਉਸ URL ਨਾਲ ਕਰੋ ਜੋ ਤੁਹਾਡਾ JavaScript ਬੁਲਾਉਂਦਾ ਹੈ। ਕਿਤੇ ਹੋਰ ਖਤਮ ਹੁੰਦਾ ਰੀਡਾਇਰੈਕਟ, ਗੁੰਮ ਜਾਂ ਵਾਧੂ ਆਖਰੀ ਸਲੈਸ਼, ਢੰਗ ਦੀ ਅਣਬਣ, ਜਾਂ ਤਬਦੀਲ ਹੋਏ ਪੰਨੇ ਤੋਂ ਸਾਪੇਖ ਮਾਰਗ ਉੱਤੇ ਭੇਜਦਾ ਫਾਰਮ ਲੱਭੋ। ਰੀਡਾਇਰੈਕਟ ਲੜੀ ਅੰਤ ਤੱਕ ਲੱਭੋ ਅਤੇ ਪਹਿਲੇ ਦੀ ਥਾਂ ਆਖਰੀ URL ਲਿਖੋ।

ਫਿਰ ਸ਼ੁਰੂ ਕਰਨ ਵਾਲੇ ਨੂੰ ਵੇਖੋ। ਜੇ ਬੇਨਤੀ ਤੁਹਾਡੀ ਸਕ੍ਰਿਪਟ ਦੀ ਥਾਂ ਦਸਤਾਵੇਜ਼ ਨੈਵੀਗੇਸ਼ਨ ਤੋਂ ਆਈ ਹੈ, ਸਮੱਸਿਆ ਪਹਿਲਾਂ ਹੀ ਮਿਲ ਗਈ ਹੈ, ਅਤੇ ਜਵਾਬ ਪਾਰਸਰ ਵਿੱਚ ਕੋਈ ਬਦਲਾਅ ਮਦਦ ਨਹੀਂ ਕਰੇਗਾ।

ਕਦਮ 3: ਨਤੀਜੇ ਨੂੰ ਚਾਰ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ ਵੰਡੋ

ਹਰ ਨਤੀਜਾ ਇਹਨਾਂ ਵਿੱਚੋਂ ਠੀਕ ਇੱਕ ਵਿੱਚ ਪੈਂਦਾ ਹੈ, ਅਤੇ ਸ਼੍ਰੇਣੀ ਤੈਅ ਕਰਦੀ ਹੈ ਕਿ ਅੱਗੇ ਕਿੱਥੇ ਵੇਖਣਾ ਹੈ।

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

ਵਿਚਕਾਰਲੀਆਂ ਕਤਾਰਾਂ ਉਹ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਲੋਕ ਗਲਤ ਨਿਦਾਨ ਕਰਦੇ ਹਨ, ਕਿਉਂਕਿ ਸਥਿਤੀ 200 ਹੈ। ਰੀਡਾਇਰੈਕਟ ਤੋਂ ਬਾਅਦ ਮਿਲਣ ਵਾਲਾ ਸਾਈਨ-ਇਨ ਪੰਨਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਚੰਗਾ HTTP ਜਵਾਬ ਅਤੇ ਬਹੁਤ ਮਾੜਾ JSON ਦਸਤਾਵੇਜ਼ ਹੈ। application/json ਸਮੱਗਰੀ ਕਿਸਮ ਇਹ ਸੁਧਾਰਦੀ ਨਹੀਂ: ਇਹ ਸਿਰਫ਼ ਲੇਬਲ ਹੈ, ਅਤੇ ਗਲਤ ਲੇਬਲ ਵਾਲੀ ਬਾਡੀ ਫਿਰ ਵੀ ਪਾਰਸ ਨਹੀਂ ਹੁੰਦੀ। ਪਹੁੰਚ ਰੋਕੀ ਗਈ ਉਹ ਕਤਾਰ ਹੈ ਜੋ ਪੂਰੀ ਬੇਨਤੀ ਵਰਗੀ ਦਿਸਦੀ ਹੈ: ਪੈਨਲ ਸਥਿਤੀ ਦਿਖਾਉਂਦਾ ਹੈ, ਪਰ ਕ੍ਰਾਸ-ਓਰੀਜਨ ਨੀਤੀ ਬਾਡੀ ਰੋਕਦੀ ਹੈ, ਇਸ ਲਈ ਬੁਲਾਉਣ ਵਾਲੀ ਸਕ੍ਰਿਪਟ ਲਈ ਇਹ ਸਮਾਂ ਸੀਮਾ ਜਿੰਨੀ ਹੀ ਬੇਕਾਰ ਹੈ।

ਚੌਥੀ ਕਤਾਰ ਪੁਰਾਣੇ PHP ਅਤੇ ਫਰੇਮਵਰਕ ਸਟੈਕ ਉੱਤੇ ਓਨੀ ਹੀ ਆਮ ਹੈ। ਐਨਕੋਡ ਕੀਤੇ ਪੇਲੋਡ ਤੋਂ ਪਹਿਲਾਂ ਛਾਪੀ ਗਈ ਅਪ੍ਰਚਲਿਤਤਾ ਚੇਤਾਵਨੀ ਅਜਿਹੀ ਬਾਡੀ ਬਣਾਉਂਦੀ ਹੈ ਜਿਸ ਨੂੰ ਕੋਈ JSON ਪਾਰਸਰ ਨਹੀਂ ਮੰਨੇਗਾ, ਅਤੇ ਅਕਸਰ ਉਹੀ ਚੇਤਾਵਨੀ ਪੂਰੀ ਵਿਆਖਿਆ ਹੁੰਦੀ ਹੈ।

ਕਦਮ 4: ਪਾਰਸਰ ਦੀ ਗਲਤੀ ਅੱਖਰੀ ਤੌਰ ਉੱਤੇ ਪੜ੍ਹੋ

ਗਲਤੀ ਦਾ ਪਾਠ ਪਾਰਸਿੰਗ ਤੋੜਨ ਵਾਲੇ ਪਹਿਲੇ ਅੱਖਰ ਦਾ ਨਾਮ ਲੈਂਦਾ ਹੈ, ਅਤੇ ਇਹ ਆਮ ਤੌਰ ਉੱਤੇ ਬਿਨਾਂ ਕਿਸੇ ਅੰਦਾਜ਼ੇ ਦੇ ਸ਼੍ਰੇਣੀ ਪਛਾਣ ਦਿੰਦਾ ਹੈ।

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

200 ਨਾਲ ਖਾਲੀ ਬਾਡੀ ਆਪਣੀ ਵੱਖਰੀ ਘਟਨਾ ਹੈ: ਐਂਡਪੌਇੰਟ ਚੱਲਿਆ, ਕੁਝ ਪੈਦਾ ਨਹੀਂ ਕੀਤਾ, ਅਤੇ ਹੇਠਾਂ ਕਿਸੇ ਚੀਜ਼ ਨੇ ਇਸ ਨੂੰ ਸਫਲਤਾ ਮੰਨ ਲਿਆ। ਇਹ ਢੁਆਈ ਦੀ ਨਹੀਂ, ਐਪਲੀਕੇਸ਼ਨ ਸਮਝੌਤੇ ਦੀ ਅਸਫਲਤਾ ਹੈ, ਅਤੇ ਇਸ ਦੀ ਥਾਂ ਪ੍ਰੌਕਸੀ ਵਿੱਚ ਨਹੀਂ ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਹੈ। Firefox ਅਤੇ Safari ਉਹੀ ਚਾਰ ਅਸਫਲਤਾਵਾਂ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਕਹਿੰਦੇ ਹਨ, ਇਸ ਲਈ ਸਹੀ ਸਟ੍ਰਿੰਗ ਦੀ ਥਾਂ ਅੱਖਰ ਜਾਂ ਖਾਲੀ ਬਾਡੀ ਉੱਤੇ ਮਿਲਾਓ।

ਕਦਮ 5: ਸਬੂਤ ਜਿਸ ਪਰਤ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੇ ਹਨ ਉਹ ਸੁਧਾਰੋ

ਰੂਟਿੰਗ ਸਮੱਸਿਆ ਲਈ ਬੇਨਤੀ ਸੁਧਾਰੋ: action ਸੁਧਾਰੋ, ਹੈਂਡਲਰ ਨੂੰ ਡਿੱਗਣ ਤੋਂ ਰੋਕੋ, ਐਂਡਪੌਇੰਟ ਅਤੇ ਢੰਗ ਮਿਲਾਓ, ਅਤੇ ਦੁਬਾਰਾ ਪਰੀਖਿਆ ਕਰੋ। ਪ੍ਰਤੀਨਿਧਤਾ ਸਮੱਸਿਆ ਲਈ ਜਿਸ ਨੇ ਬਾਡੀ ਬਣਾਈ ਉਹ ਸੁਧਾਰੋ, ਅਤੇ ਪਤਾ ਕਰੋ ਕਿ ਜਿੱਥੇ ਡਾਟਾ ਆਸ ਕੀਤਾ ਸੀ ਉੱਥੇ ਗਲਤੀ ਦਸਤਾਵੇਜ਼ ਕਿਉਂ ਵਾਪਸ ਆਉਂਦਾ ਹੈ। ਸਮਝੌਤਾ ਸਮੱਸਿਆ ਲਈ ਤੁਸੀਂ ਚਲਾ ਰਹੇ ਸੰਸਕਰਣ ਲਈ ਫਰੇਮਵਰਕ ਦੀ ਅਸਲ ਆਸ ਕੀਤੀ ਬਣਤਰ ਪੜ੍ਹੋ, ਅਤੇ ਕਲਾਇੰਟ ਢਿੱਲਾ ਕਰਨ ਦੀ ਥਾਂ ਜਵਾਬ ਨੂੰ ਉਸ ਅਨੁਸਾਰ ਢਾਲੋ।

ਪਹੁੰਚ ਰੋਕੀ ਗਈ ਜਵਾਬ ਲਈ ਆਪਣਾ ਦੌਰ ਚਾਹੀਦਾ ਹੈ, ਕਿਉਂਕਿ ਬੇਨਤੀ ਆਪ ਸਹੀ ਹੋ ਸਕਦੀ ਹੈ ਅਤੇ ਬਾਡੀ ਕਦੇ ਤੁਹਾਡੇ ਕੋਡ ਤੱਕ ਨਾ ਪਹੁੰਚੇ। ਜਵਾਬ ਦੇ Access-Control-Allow-Origin ਦੀ ਤੁਲਨਾ ਬਰਾਊਜ਼ਰ ਵੱਲੋਂ ਭੇਜੇ ਗਏ ਸਹੀ Origin ਨਾਲ ਕਰੋ, ਅਤੇ ਯਾਦ ਰੱਖੋ ਕਿ ਵਾਈਲਡਕਾਰਡ ਪ੍ਰਮਾਣ ਪੱਤਰ ਵਾਲੀ ਬੇਨਤੀ ਪੂਰੀ ਨਹੀਂ ਕਰਦਾ। ਕਲਾਇੰਟ ਵਿੱਚ credentials: 'include' ਨੂੰ ਸਰਵਰ ਵਿੱਚ Access-Control-Allow-Credentials: true ਨਾਲ ਜੋੜੋ, ਅਤੇ ਵੇਖੋ ਕਿ ਕਾਲ ਨੇ no-cors ਮੋਡ ਵਰਤਿਆ ਜਾਂ ਨਹੀਂ, ਜਿੱਥੇ ਧੁੰਦਲੀ ਬਾਡੀ ਨੁਕਸ ਨਹੀਂ, ਦਰਜ ਨਤੀਜਾ ਹੈ।

ਪਾਰਸਰ ਨੂੰ ਹੋਰ ਨਰਮ ਚੀਜ਼ ਨਾਲ ਬਦਲਣਾ ਇੱਕੋ ਇੱਕ ਸੁਧਾਈ ਹੈ ਜਿਸ ਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਵਾਬ ਦਾ ਕੋਡ ਵਜੋਂ ਮੁਲਾਂਕਣ ਕਰਨਾ, ਜਾਂ ਪਾਰਸ ਹੋਣ ਤੱਕ ਪਾਠ ਛਿੱਲਣਾ, ਸਮਝੌਤੇ ਦੀ ਅਣਬਣ ਲੁਕਾਉਂਦਾ ਹੈ ਅਤੇ ਚੁੱਪ ਦੇ ਬਦਲੇ ਇੰਜੈਕਸ਼ਨ ਸਤਹ ਜੋੜਦਾ ਹੈ। ਇਸੇ ਤਰ੍ਹਾਂ ਸਥਿਤੀ ਨੂੰ ਬਾਡੀ ਤੋਂ ਵੱਖ ਜਾਂਚਣਾ ਜ਼ਰੂਰੀ ਹੈ: ਐਪਲੀਕੇਸ਼ਨ ਪੱਧਰ ਦੀ ਗਲਤੀ ਵਸਤੂ ਵਾਲਾ 200 ਬਹੁਤ ਸਾਰੇ API ਵਿੱਚ ਆਮ ਹੈ ਅਤੇ ਪੇਲੋਡ ਪੜ੍ਹ ਕੇ ਸੰਭਾਲਣਾ ਚਾਹੀਦਾ ਹੈ।

ਜਦੋਂ ਕਿਸੇ ਹੋਰ ਦੀ ਮਦਦ ਚਾਹੀਦੀ ਹੈ, ਕੱਚੀ ਐਕਸਪੋਰਟ ਦੀ ਥਾਂ ਘੱਟੋ-ਘੱਟ ਰਿਕਾਰਡ ਸਾਂਝਾ ਕਰੋ — ਢੰਗ, URL, ਸਥਿਤੀ, ਰੀਡਾਇਰੈਕਟ ਤੋਂ ਬਾਅਦ ਆਖਰੀ URL, ਜਵਾਬ ਦੀ ਸਮੱਗਰੀ ਕਿਸਮ, ਬਾਡੀ ਦਾ ਆਕਾਰ ਅਤੇ ਆਸ ਕੀਤਾ ਸਮਝੌਤਾ। ਨੈੱਟਵਰਕ ਆਰਕਾਈਵ ਵਿੱਚ ਕੂਕੀਜ਼, ਟੋਕਨ, ਕੁਐਰੀ ਸਟ੍ਰਿੰਗ ਅਤੇ ਫਾਰਮ ਵਿੱਚ ਮੌਜੂਦ ਨਿੱਜੀ ਡਾਟਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਸਵੈਚਾਲਿਤ ਸਫ਼ਾਈਕਰਤਾ ਸਮੀਖਿਆ ਨਹੀਂ ਹੈ।

  • ਕੋਈ ਵੀ ਕੋਡ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਫਿਲਟਰ ਤੋਂ ਬਿਨਾਂ ਬੇਨਤੀ ਫੜੋ।
  • ਪੱਕਾ ਕਰੋ ਕਿ ਸ਼ੁਰੂ ਕਰਨ ਵਾਲਾ ਤੁਹਾਡੀ ਸਕ੍ਰਿਪਟ ਸੀ ਅਤੇ ਆਖਰੀ URL ਤੁਹਾਡਾ ਐਂਡਪੌਇੰਟ ਹੈ।
  • ਪਾਰਸਰ ਨੂੰ ਛੂਹਣ ਤੋਂ ਪਹਿਲਾਂ ਜਵਾਬ ਦੀ ਸ਼੍ਰੇਣੀ ਤੈਅ ਕਰੋ।
  • ਰੂਟਿੰਗ, ਪਹੁੰਚ, ਪ੍ਰਤੀਨਿਧਤਾ ਜਾਂ ਸਮਝੌਤਾ ਸੁਧਾਰੋ, ਅਤੇ ਪਾਰਸਰ ਢਿੱਲਾ ਕਰਕੇ ਕਦੇ ਨਹੀਂ।

ਸੰਬੰਧਿਤ ਲੇਖ