Николай Волков, почему не работает написано английским по белому: "No 'Access-Control-Allow-Origin' header is present on the requested resource." - "Никакого заголовка 'Контроль доступа, разрешить для источника' нет на запрашиваемом ресурсе."
Другими словами ресурс не указал никаким образом, что с него можно хоть что-то забирать клиентским скриптам с других сайтов. А по умолчанию - нельзя.
Предложенный же вариант называется jsonp, и является просто подключением стороннего скрипта на ваш сайт. Весь вышеприведённый код по сути делает:
<script>
function __jsonp_dynamic_callback_random(json){
res(json);
delete window.__jsonp_dynamic_callback_random;
};
</script>
<script src="//kladr-api.ru/api.php?query=Арх&contentType=city&withParent=1&limit=3&callback=__jsonp_dynamic_callback_random"></script>
Где res - ваша функция.
Сервер же на своей стороне просто оборачивает отдаваемый json в вызов функции, имя которой передано в параметре callback, т.е. возвращает:
__jsonp_dynamic_callback_random({
"result": "ответ"
});
Jsonp использовался задолго до того, как стало возможным междоменное взаимодействие. Плюсы - простота и возможность использовать где угодно. Минусы же - безопасность. Если сайт скомпрометирован, то вам может прилететь не только нужный ответ, но и произвольный кусок кода.