Показывать города Малайзии на основе выбранных состояний

Я хочу выпустить список стран и городов Малайзии.

  • Вот моя первая страница: (test3.php)

введите описание изображения здесь

  • Когда я выбираю KL, мой прогноз ожиданий города показан следующим образом:

введите описание изображения здесь

  • Когда я выбираю Selangor, мой ожидаемый результат в городе показан следующим образом:

введите описание изображения здесь

  • Данные состояния json ($ stateJsonObject)

    Array ( [0] => stdClass Object ( [stateId] => s1 [stateName] => Kuala Lumpur) [1] => stdClass Object ( [stateId] => s2 [stateName] => Selangor)) 
  • Данные города json ($ cityJsonObject)

     Array ( [0] => stdClass Object ( [cityId] => c1 [cityName] => Kajang [cityStateId] => s2 ) [1] => stdClass Object ( [cityId] => c2 [cityName] => Seputeh [cityStateId] => s1 ) [2] => stdClass Object ( [cityId] => c3 [cityName] => Shah Alam [cityStateId] => s2 ) [3] => stdClass Object ( [cityId] => c4 [cityName] => Klang [cityStateId] => s2 ) [4] => stdClass Object ( [cityId] => c5 [cityName] => Kepong [cityStateId] => s1 )) 
  • Код (test3.php)

     <html> <head> <script type="text/javascript"> function showCity() { //state id from drop down list var stateId = state.options[state.selectedIndex].value; //CODE HERE } </script> </head> <body> <form action="test3.php" method="post"> State: <select name="state" id="state" onchange="showCity();"> <option value ="">select one</option> <?php for($i = 0; $i < count($stateJsonObject); $i++) { echo '<option value = '.$stateJsonObject[$i] -> stateId.'>'; echo $stateJsonObject[$i] -> stateName; echo '</option>'; } ?> </select> <br /> City: <select name="city" id="city"> <option value ="">select one</option> </select> </form> </body> </html> 
  • На основании приведенной выше ссылки ниже приведены мои вопросы:
    (1) Как сравнить идентификатор состояния между js и php (json) в разделе CODE HERE ?
    (2) Как отобразить раскрывающийся список города в зависимости от состояния, которое я выбираю в разделе CODE HERE ?

Как я вижу, у вас есть два варианта:

1.) загрузить весь объект в один «большой» JSON и подготовить его в Javascript, а затем просто манипулировать select с JS.

2.) если номер один не работает так хорошо (данные biiiiig) «ленивая» загрузка выбирает – снова с помощью AJAX – и делает выбор с помощью JS.

Так что – используйте JS для всех манипуляций, где возможно, и я думаю, что это проще всего 🙂

ps: При написании методов выбора рендеринга – хорошо продумывайте все возможные сценарии, а также имейте функцию сброса для них – это поможет вам в конце 🙂