Sumado a lo que te comentan, que me parece bien, agrego:
Que compruebes que la variable response (o data en tu caso) sea un objeto. Si fuese un string equivaldría a un error del lado cliente. Salvando este caso, si tenes un objeto, vas haciendo comprobaciones para saber si response.success esta definido, o si response.error lo esta, etc.
Usa en todo caso bloques try catch y define un mensaje de error en el catch. Esto suma solidez.
Finalmente, jquery tiene un capturador de errores ajax que sirve para cuando no se obtiene respuesta del servidor por algun error. Se define una sola vez en la pagina y sirve para manejar errores que ni el catch puede capturar:
http://api.jquery.com/ajaxError/