It completely depends on the library you use and what the API returns.
For example, axios is a wrapper around ajax calls. It makes it very easy to fetch data, but because of that is also separated the returned data and other details from the response inside the response object. That's why you need response.data.status here.
If you use a basis ajax call, you handle the raw response which doesn't have a data key by default. Unless the API returns such a structure of course.
That depends on how you make your controllers. The 422 response is generated by the exception handler in Laravel. The normal responses are probably generated by API-resources, right?
The reason you need to check for response.data is pure axios. I would expect that you would get that on your 4xx responses as well. Unless you give status back yourself.
Can you maybe show an example of your controller with the API-resource?