Home > Enterprise >  jQuery $.post needs JSON response parsed manually all of a sudden
jQuery $.post needs JSON response parsed manually all of a sudden

Time:12-23

I'm calling to the server using jQuery's $.post method and assigning the JSON response to a variable called "result". The response is an array in PHP's json_encode() function.

Up until now I've always just used the properties of "result" directly, as the JSON gets parsed into an object automatically. But now, after some debugging, I've found that my code only works when I use JSON.parse(result) first.

What could've caused this sudden change?

Solution: Adding header("Content-Type: application/json") serverside when echoing a JSON encoded response.

CodePudding user response:

Either:

  1. Your server stopped setting the correct Content-Type response header (application/json). PHP will claim anything it sends to the browser is text/html unless you use the header() function to override that.
  2. You didn't say type: 'json' to make jQuery (a) set an Accept header and (more relevantly) (b) ignore the response's Content-Type header and try to parse it as JSON regardless.
  • Related