Если это простая HTML-форма, ее можно легко заполнить cURL
Мне не ясно, что вы имеете в виду здесь. Насколько я знаю, cURL - это инструмент для выполнения HTTP-запросов. Он не может «заполнять формы» (в отличие, например, от WWW :: Mechanize). Я ошибаюсь по этому поводу?
Я думаю, вы имеете в виду: «Если это простая форма на основе HTML, я могу легко создать HTTP-запрос, используя cURL, который отправляет ту же строку запроса или данные POST, что и при использовании браузера». Я собираюсь продолжить это предположение.
Использование Ajax (само по себе) не мешает вам создавать данные формы вручную и отправлять их как обычно. Просто становится немного сложнее понять, какие данные вам нужно предоставить.
Удаленная система может быть реализована таким образом, что она перестанет работать, если вы не запросите все биты данных в правильной последовательности (например, она прекратит работу, если вы предоставите полные данные в конце без запроса списка городов для страны). Акцент на «могуществе», это не будет разумным способом реализации системы.
Вы также можете сделать несколько запросов с помощью cURL, чтобы вы могли получить список городов (и любые идентификаторы, которые могут быть с ними связаны) и получить к ним программный доступ.