2015-01-21 10 views
5

Mam here kod i przepływ mojego projektu mam 3 wybierz tutaj jeden dla kontynentu pierwszego dla kraju pierwszego dla miasta otrzymuję dane do wypełnienia tych wybierz z ajax wniosek, że teraz działa dobrze Po prostu chce mi się trochę ochotę, więc chcę mieć kilka funkcjiwybierz opcję Wygeneruj wartość z ajax na zmianę

1. Kiedy kontynent jest zaznaczony, lista krajów dla tego kontynentu jest wymieniona na liście krajów, gdy zmiana się zachodzi. Chcę, żeby miasto również pokaż miasta pierwszego wpisu w kraju obecnie nie stało się to, co robię, nadal muszę zmienić wpis w kraju wybierz, aby wyświetlić listę miast

2.Question to muszę dodać kolejny żądania ajax ajax wewnątrz wniosku o kontynencie nie jestem pewien, że ten jeden jest wykonalne próbowałem go nie działa na razie

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

    }); 

z bazy danych i umieścić wartość w opcji wybrać jak

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

Odpowiedz

5

można wyzwalać zdarzenia zmiany dla elementu kraju po to jest wypełniana

$('.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>'); 
      } 
     } 
    }); 
}); 
+0

że był prosty myślałem, że muszę dokonać innego ajax, że to strata czasu, nie mogę zaznaczyć go przez następne 10 minut pewni będę zaznaczyć więc inni mogą sprawdź odpowiedź –

+0

Proszę odpowiedzieć na pytanie, jaką zmianę wprowadziłeś w odpowiedzi? to '$ ('# country')' różni się od 'document.getElementById ('country')'? –

+1

@HogRider, ponieważ używasz jQuery .... jest to sposób jQuery ... łatwy i mniej pisania ... również nie trzeba wywoływać '$ (kraj)' wiele razy –

0

można uzyskać zarówno listę krajów i listę Miasto pierwszego kraju w ../include/continent.php:

  1. Get listy kraj tablicę
  2. Get lista miast, gdzie countryid = kraj [0] .ID
  3. Kombajny je i dodaj kolejne pole, na przykład type

Przykład:

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

Następnie w 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... 
    } 
    } 
});