Estoy llamando al servidor usando el método $.post de jQuery y asignando la respuesta JSON a una variable llamada result . La respuesta es una matriz en la función json_encode() de PHP.
Hasta ahora, siempre he usado las propiedades del result directamente, ya que el JSON se analiza automáticamente en un objeto. Pero ahora, después de algunas depuraciones, descubrí que mi código solo funciona cuando uso JSON.parse(result) primero.
¿Qué pudo haber causado este cambio repentino?
Solución: Agregar header("Content-Type: application/json") en el lado del servidor al hacer eco de una respuesta codificada en JSON.
O:
Content-Type correcto ( application/json ). PHP afirmará que cualquier cosa que envíe al navegador sea text/html a menos que use la función de header() para anular eso.type: 'json' para hacer que jQuery (a) establezca un encabezado de Accept y (más relevante) (b) ignore el encabezado Content-Type de la respuesta e intente analizarlo como JSON independientemente.