Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podwójne wywołanie funkcji przy onchange
Forum PHP.pl > Forum > XML, AJAX
doktorek
Witam

Mam kilka selektów na stronie.
Po wyborze jednego chcę aby kilka następnych było generowanych na podstawie wyboru pierwszego.

Mam taki kod funkcji, która jest odpalana po wyborze pierwszego selecta (onchange)

var lista = document.getElementById('uzytkownik');
var tekstId = parseInt(lista[lista.selectedIndex].value);
XMLHttpRequestObject.open("GET", "imie.php?id=" + tekstId);
XMLHttpRequestObject.onreadystatechange = function()
{
if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
var div = document.getElementById('pole_imie');
div.innerHTML = XMLHttpRequestObject.responseText;
}
}

XMLHttpRequestObject.send(null);
}

I teraz chciałem jednocześnie odpalić drugą taką samą funkcję ale pobierającą dane z pliku nazwisko.php i wstawiającą selekta w inne miejsce ( pole_nazwisko )
I jak zrobię tak.

  1. var lista = document.getElementById('uzytkownik');
  2. var tekstId = parseInt(lista[lista.selectedIndex].value);
  3. XMLHttpRequestObject.open("GET", "imie.php?id=" + tekstId);
  4. XMLHttpRequestObject.onreadystatechange = function()
  5. {
  6. if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
  7. var div = document.getElementById('pole_imie');
  8. div.innerHTML = XMLHttpRequestObject.responseText;
  9. }
  10. }
  11.  
  12. XMLHttpRequestObject.send(null);
  13. }
  14.  
  15.  
  16. var lista = document.getElementById('uzytkownik');
  17. var tekstId = parseInt(lista[lista.selectedIndex].value);
  18. XMLHttpRequestObject.open("GET", "nazwisko.php?id=" + tekstId);
  19. XMLHttpRequestObject.onreadystatechange = function()
  20. {
  21. if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
  22. var div = document.getElementById('pole_nazwisko');
  23. div.innerHTML = XMLHttpRequestObject.responseText;
  24. }
  25. }
  26.  
  27. XMLHttpRequestObject.send(null);
  28. }


To niestety zmienia mi tylko pole z nazwiskiem.
A wcześniejsze imię nie...
Tomplus
Jak wrzucasz kod, to albo do jsFiddle
albo używaj BBCODE, bo trudno odpowiedzieć na pytanie gubiąc się w chaosie znaczków.

doktorek
Cytat(Tomplus @ 3.11.2016, 10:55:06 ) *
Jak wrzucasz kod, to albo do jsFiddle
albo używaj BBCODE, bo trudno odpowiedzieć na pytanie gubiąc się w chaosie znaczków.


Racja smile.gif
Poprawione smile.gif
Dziękuję za uwagę.
Tomplus
To teraz patrząc na ten kod zastanawiam się czy nie lepiej abyś wykonywał tylko jedno odwołanie do nazwy użytkownika i kierował do pliku:

imie_i_nazwisko.php
a tam wykonujesz pętle sprawdzającą czy w bazie jest użytkownik o takim imieniu lub nazwisku.

Jeżeli będzie istnieć imię to zwracasz odpowiedź o imieniu, najlepiej aby były dwa parametry np. jako JSON:
1. imię lub nazwisko
2. czy to imię, czy nazwisko


doktorek
Rozumiem...

Tylko zastanawia mnie dlaczego kiedy wywołuje ten sam kawałek kodu... nie podmienia mi pierwszego selekta tylko zawsze ostatniego...
Jak usunę drugi fragment to podmieni mi selekta z imieniem...
viking
A może byś spróbował do zmiennych przypisywać obiekt XMLHttpRequestObject?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.