Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML, AJAX _ Dynamiczne selecty

Napisany przez: Arrow 25.04.2006, 10:04:26

witam,

troszke braklo mi juz pomyslow jak rozwiazac ten problem, prosta funkcja js+advAJAX:

Kod
function miasta(i) {
advAJAX.setDefaultParameters({
onInitialization : function(obj) {document.getElementById(obj.tag).innerHTML = "Przygotowanie...";},
onLoading : function(obj) { document.getElementById(obj.tag).innerHTML = "Ładowanie danych..."; },
onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = obj.responseText +"&nbsp;<img src=\"grafika/dodaj.gif\" border=\"0\ align=\center\">"; },
onError : function(obj) { document.getElementById(obj.tag).innerHTML = "Błąd..."; }
});
advAJAX.get({ url: "php/ajax/miasta.php?id_w="+i, tag: "miasta" });
advAJAX.setDefaultParameters({});
}


select z wojewodztwami:
  1. <http://december.com/html/4/element/select.html name="wojewodztwa" onchange="miasta(this.value);">
  2. <http://december.com/html/4/element/option.html value="0">Wybierz wojewodztwo</http://december.com/html/4/element/option.html>
  3. <http://december.com/html/4/element/option.html value="2" onclick="miasta(this.value);">Podkarpackie</http://december.com/html/4/element/option.html>
  4. <http://december.com/html/4/element/option.html value="1" onclick="miasta(this.value);">Wielkopolskie</http://december.com/html/4/element/option.html></http://december.com/html/4/element/select.html>


no i w ff wszystko gra, w IE owsze za pierwszym razem zostaje wygenerowany select z odpowiednimi miastami, natomiast w razie zmiany wojewodztwa juz nie (zdzarzenie onclick nie dziala)

Napisany przez: TomASS 25.04.2006, 10:33:22

http://forum.php.pl/index.php?showtopic=41579&view=findpost&p=237096 masz przykład.

I zamiast onClick daj onChange na całego SELECTA:

  1. <http://december.com/html/4/element/select.html name="wojewodztwa" id="wojewodztwa" onchange="getRecords();">

Napisany przez: Arrow 25.04.2006, 11:01:29

witam,

dzieki za odpowiedz smile.gif

onChange juz jest od poczatku bylo, onClick dodalem poniewaz z niewadomych mi przyczyn onChange dzialalo ale raz pozniejsze zmiany wojewodztwa nie powodowaly wczytania nowych miast

problem jest tylko w IE, a niestety aplikacja bedzie obslugiwana glownie z tej przegladarki, nie chce rezygnowac z ajaxa

nic przeczytam Twoj post moze mi sie cos urodzi smile.gif

IE genreuje blad - Obiekt nie obsluguje tej wlasciwosci lub metody
Linia 184 wiersz 1 -

  1. <http://december.com/html/4/element/select.html name="wojewodztwa" id="wojewodztwa" onchange="miasta();">


---------------------------------------------------------------------------------------------------
Problem rozwiazany uf smile.gif, okazuje sie, ze chodzilo o to, ze odpowiedz byla generowana ze znacznikiem <selec> i to wszytsko blokowalo w IE aaevil.gif oto kompletny kod:

  1. function $(id)
  2. {
  3.  return document.getElementById(id);
  4. }
  5.  
  6.  
  7. function miasta()
  8. {
  9.  advAJAX.get({
  10.    url: "php/ajax/miasta.php?id_w="+$("wojewodztwa").value,
  11.    tag: "miasta",
  12.    onInitialization : function(obj) {$(obj.tag).innerHTML = "Przygotowanie..."; $("wojewodztwa").disabled = true;},
  13.    onLoading : function(obj) {$(obj.tag).innerHTML = "Ładowanie danych...";},
  14.    onSuccess : function(obj) {$(obj.tag).innerHTML = "<http://december.com/html/4/element/select.html id=\"m\" name=\"miastaa\">"+obj.responseText +"</http://december.com/html/4/element/select.html>&nbsp;<http://december.com/html/4/element/img.html src=\"grafika/dodaj.gif\" border=\"0\ align=\center\">"; $("wojewodztwa").disabled = false;},
  15.    onError : function(obj) {$(obj.tag).innerHTML = "Błąd..."; }
  16.  });
  17. }

jak widac rozwiazalem to w soposb taki ze odpowiedz jest wklejana miedzy znaczniki <select> a nie generowana z nimi

no w sumie IE i tak wyrzuca bledy js ale to moze nastepny razem zrobie ... winksmiley.jpg

Napisany przez: TomASS 26.04.2006, 23:29:56

Czyli jak dobrze rozumiem w obj.responseText dostajesz ileś tam optionów?
<option>Wrocław</option>
<option>Legnica</option>
<option>Opole</option>
?
Przecierz możesz użyć:

Kod
new Option(nazwa[i],ID[i]);

Polecam http://www.quirksmode.org/js/options.html stronkę.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)