web-dev-qa-db-fra.com

sélectionnez l'option générer de la valeur à partir d'ajax lors du changement

J'ai ici le code et le flux de mon projet, j'ai 3 sélectionnez ici un pour le continent un pour le pays un pour la ville j'obtiens des données pour les peupler fantaisie donc je veux avoir quelques fonction

1.Lorsque Continent est sélectionné, la liste des pays pour ce continent est répertoriée dans la liste des pays lorsque le changement se produit. Je veux la ville montrer également les villes de la première entrée dans le pays actuellement il ne s'est pas passé ce que je fais est que j'ai toujours besoin de changer l'entrée dans le pays, sélectionnez pour afficher la liste des villes 

2.Question est-ce que j'ai besoin d'ajouter une autre demande ajax à l'intérieur de la demande ajax pour le continent, je ne suis pas sûr que celle-ci soit réalisable;

Code 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>');
    }
            }
        });

    });

De la base de données je mets la valeur dans l'option select like 

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

Vous pouvez déclencher un événement de modification pour l'élément country une fois qu'il est rempli

$('.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

Vous pouvez obtenir à la fois la liste des pays et la liste des villes du premier pays en ../include/continent.php:

  1. Obtenir un tableau de liste de pays
  2. Obtenir la liste des villes où countryid = pays [0] .id
  3. Combinez-les et ajoutez un autre champ comme type

Exemple:

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

Puis en 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