Я хочу выпустить список стран и городов Малайзии.
Данные состояния 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: При написании методов выбора рендеринга – хорошо продумывайте все возможные сценарии, а также имейте функцию сброса для них – это поможет вам в конце 🙂