Yo me refiero a depurar del lado donde anda mal, ¿no te parece lógico?
Es decir, en tu script, al recibir el POST:
¿Tienes habilitado el reporte de errores?
¿Cómo sabes que estás recibiendo correctamente las cosas?
¿Cómo te aseguras que no existió un error al interpretar el JSON?
Tan fácil como agregar un var_dump() del $_POST para ver lo que realmente recibes, si nosotros pudiéramos adivinar dicho resultado no habría que molestarte tanto.
Y tu problema, básicamente, es que asumes que PHP recibe todo perfecto y puesto a que no depuras nada esperas a que acertemos casi magicamente sin conocer más información al respecto.