Что не так в коде Javascript?
Потому, что запрос асинхронный, и первые два console.log вызываются до того, как получен ответ с сервера.
Да потому что js не будет ждать когда у вас пройдет запрос и вернутся данные, а продолжит свое выполнение, а это значит, что пока запрос не обработан result будет false. Тут вам надо использовать либо Promise, либо callback функцию.