И нужного поля response.responseJSON.d нет, так как страница не догрузилась до конца. Но если через секунду проверить этот же объект, то поле уже будет (как и readyState: 4)
Просто вы не умеете в асинхронность.
Читайте документацию
api.jquery.com/jquery.ajax
метод success срабатывает уже после того, как получен ответ, и на момент его срабатывания в переменной уже содержится всё что нужно. Но вы пытаетесь обращаться к переменной еще до того как пришел ответ.
Что делать? Читать учебник, про асинхронность, коллбэки и промисы.
console.log('начало')
var res;
$.ajax({
url: URL,
success: function (response) {
console.log('данные получены', response)
res = response;
}
})
console.log('данные еще не получены', res)