it-swarm.com.ru

выберите опцию генерировать значение из ajax при изменении

У меня есть здесь код и поток моего проекта у меня есть 3 выберите здесь один для континента один для страны один для города я получаю данные для заполнения этих выберите из запроса AJAX теперь он работает нормально, я просто хочу немного фантазии, поэтому я хочу иметь несколько функций

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

2. Вопрос в том, нужно ли мне добавить еще один запрос ajax внутри запроса ajax для континента. Я не уверен, что это возможно, я попробовал, Пока он не работает.

Код Ajax

$('.continentname').change(function() {
        var id = $(this).find(':selected')[0].id;
        //alert(id); 
        $.ajax({
            type:'POST',
            url:'../include/continent.php',
            data:{'id':id},
            success:function(data){
                // the next thing you want to do 
    var country= document.getElementById('country');
              $(country).empty();
    var city = document.getElementById('city');
              $(city).empty();
    for (var i = 0; i < data.length; i++) {
    $(country).append('<option id=' + data[i].sysid + ' value=' + data[i].name + '>' + data[i].name + '</option>');
    }
            }
        });

    });

$('.countryname').change(function() {
        var id = $(this).find(':selected')[0].id;
        $.ajax({
            type:'POST',
            url:'../include/country.php',
            data:{'id':id},
            success:function(data){
                // the next thing you want to do 
    var city = document.getElementById('city');
              $(city).empty();
    for (var i = 0; i < data.length; i++) {
    $(city).append('<option id=' + data[i].sysid + ' value=' + data[i].name + '>' + data[i].name + '</option>');
    }
            }
        });

    });

Из базы данных я поместил значение в опцию выберите как 

$("#continent").val(continentid);
$("#continent").change();
$("#country").change();
$("#country").val(countryid);
$("#city").val(cityid);
6
Brownman Revival

Вы можете инициировать событие изменения для элемента страны после его заполнения.

$('.continentname').change(function () {
    var id = $(this).find(':selected')[0].id;
    //alert(id); 
    $.ajax({
        type: 'POST',
        url: '../include/continent.php',
        data: {
            'id': id
        },
        success: function (data) {
            // the next thing you want to do 
            var $country = $('#country');
            $country.empty();
            $('#city').empty();
            for (var i = 0; i < data.length; i++) {
                $country.append('<option id=' + data[i].sysid + ' value=' + data[i].name + '>' + data[i].name + '</option>');
            }

            //manually trigger a change event for the contry so that the change handler will get triggered
            $country.change();
        }
    });

});

$('.countryname').change(function () {
    var id = $(this).find(':selected')[0].id;
    $.ajax({
        type: 'POST',
        url: '../include/country.php',
        data: {
            'id': id
        },
        success: function (data) {
            // the next thing you want to do 
            var $city = $('#city');
            $city.empty();
            for (var i = 0; i < data.length; i++) {
                $city.append('<option id=' + data[i].sysid + ' value=' + data[i].name + '>' + data[i].name + '</option>');
            }
        }
    });
});
7
Arun P Johny

Вы можете получить список стран и городов первой страны в ../include/continent.php:

  1. Получить массив списка стран
  2. Получить список городов, где countryid = страна [0] .id
  3. Объедините их и добавьте еще одно поле, например type

Пример:

type     | sysid | name
country  | 1     | America
country  | 2     | Canada
city     | 1     | New York
city     | 2     | Los Angles

Тогда в JavaScript:

$.post("../include/continet.php", {"id":id}, function(data){
  $(country).empty();
  $(city).empty();
  for (var i = 0; i < data.length; i++) {
    if(data[i].type == "country"){
      $(country).append...
    }
    else{
      $(city).append...
    }
  }
});
0
Bandon