2011-01-16 3 views
1

Я создал html-форму. он состоит из нескольких выпадающих списков для (стран, штатов, городов, районов)как передать параметр php с помощью Javascript

Выпадающий список для стран выглядит следующим образом.

Select Countries : <select name="countries" id="countries" onchange="showStates()"> 
<?php 
foreach($crud->getAll('countries') as $countries) 
{ 
?> 
    <option value="<?php echo $countries['id']; ?>"><?php echo $countries['name']; ?></option> 
<?php } ?> 
</select> 

и выпадающий список для состояний выглядят следующим образом.

Select State : <select name="states"> 
<?php 
foreach($property->getStatesFromCountryId($countryId) as $states) 
{ 
?> 
    <option value="<?php echo $states['id']; ?>"><?php echo $states['name']; ?></option> 
<?php } ?> 
</select> 

Выпадающий список стран выберет все страны из базы данных и заполнит его. но в выпадающем списке состояний ему должен быть динамически передан параметр из значения страны.

для этого я хотел бы достичь следующего

1) имеет идентификатор страны из страны выпадающего списка в яваскрипте переменной CountryId. код должен выглядеть примерно так: var countryId = document.getElementById("countries").value;

2) передать параметр foreach($property->getStatesFromCountryId($countryId) as $states) из переменной countryId.

Как мне это достичь?

+1

Для этого потребуется полная или асинхронная обратная передача. Код PHP обрабатывается только на стороне сервера. –

ответ

1

Три способа я могу думать о том, чтобы сделать это:

  1. магазин все состояния для каждой страны в большой файл JS в качестве объекта JS. Затем прочтите это во время события onChange в раскрывающемся списке страны.

  2. Храните все серверы состояний, используйте AJAX (XMLHttpRequest) для динамического извлечения состояний для выбранной страны.

  3. Отправьте свою форму в onChange, перейдя в скрытую переменную, чтобы указать на ваш скрипт serveride, она должна заполнять раскрывающееся меню State, а не выполнять оставшуюся часть проверки.

1

Немногие мысли о решениях Кандер в:

  1. Уродливые, но он может работать в автономном режиме. Вы можете создать большой объект JS с помощью PHP
  2. Это, вероятно, лучшее решение. Вы можете написать очень маленький PHP-скрипт, такой как json_encode($crud->getAll(isset($_GET['country']? $_GET['country'] : ''));, и иметь объект JavaScript, готовый мгновенно создать второй выпадающий список.
  3. Это безопасный для 2-го.
Смежные вопросы