Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [advajax]Zwracanie wartości do różnych inputów
Forum PHP.pl > Forum > XML, AJAX
artur81
Do tej pory jak zwracałem dane z serwera pobrane ajaxem to w pliku php dawałem echo 'coś do zwrócenia' i wstawiałem to do diva na stronie za pomocą innerhtml.
Wszystko pięknie, teraz stanąłem przed innym problemem.
Mam kilka pól tekstowych do których chcę wstawić dane z bazy.
Założmy że są to pola imie, nazwisko ,wiek, wzrost a w bazie mam takie informacje dla kilku osob.
Zrobiłem sobie diva, który zawiera listę nazwisko tych osób.
Pozycjonuję go abolutnie i pojawia się po kliknięciu w ikonę. Taki ala popup.
Do czego zmierzam. Lista nazwisk na tym divie to w rzeczywistości lista linków do których mam przypisane funkcje JS.
np
  1. <a href="java script:pobierz(1);>Jan Kowalski</a>
  2. <a href="java script:pobierz(2);>JKarol Nowak</a>

itd
Teraz chciałbym aby po kliknięciu na nazwisko nastąpiło wywołanie funkcji pobierz która połączy się z serwerem pobierze z bazy dane które mi są potrzebne i wstawi je do inputa.
Sama funkcja nie stanowi problemu, problemem jest dla mnie zwrócenie
np pola imie z bazy do inputa o id=imie
pola nazwisko z bazy do inputa o id=nazwisko

Jak zrobić takie zwracanie wyników, żeby dane trafiły do konkretnych pól?
E -dd
A nie możesz zwrócić formularza z wstawionymi danymi do DIV'a ?
artur81
no właśnie w tym przypadku nie mogę, jakby to było takie proste to bym nie pytał biggrin.gif
nospor
skrypt php niech ci zwraca te dane co potrzebujesz jako xml lub json, w js odbierasz te dane i wstawiasz do inputa. zadna filozofia winksmiley.jpg
Skryptow co to przetwarzaja takie xml bylo juz pare (w tym dziale co piszesz topic) wiec wystarczy tylko przejrzec
artur81
hm, szukałem, trafiłem na kilka tematów ale nie umiem niestety zastosować tego u siebie.
Doszedłem do tego że genruję tego xml, zwracany jest poprawnie bo wyświetlałem go sobie przez alert() i są tam dane na które czekam.
Problem mam z wstawieniem wartości poszczególnych węzłów do inputów.
Robię to tak:
  1. function parseRecords(xml) {
  2. nazwa            =xml.getElementsByTagName("nazwa");
  3. ulica            =xml.getElementsByTagName("ulica");
  4. miasto      =xml.getElementsByTagName("miasto");
  5. nip            =xml.getElementsByTagName("nip");
  6. }


a w onSuccess dla advajax mam:
  1. parseRecords(obj.responseXML);
  2.        $('nazwa_nabyw').value=nazwa;
  3.            $('ulica_nabyw').value=ulica;
  4.            $('miasto_nabyw').value=miasto;
  5.            $('nip_nabyw').value=nip;

Wydaje mi się że powinno to działać, ale zamaist spodziewanych wartości dostaję do inputa
  1. [object HTMLCollection]


Próbowałem na różne sposoby:
  1. xml.getElementsByTagName("nazwa").value
  2. xml.getElementsByTagName("nazwa").nodeValue
  3. xml.getElementsByTagName("nazwa").item(0).text


pewnie bzdury w tym przypadku, ale nie znam się zbytnio na tym, w zasadzie to jeszcze nie korzystałem z XML, a sprawa jest dosyć pilna sad.gif
seaquest
getElementsByTagName - jak sama nazwa wskazuje zwraca tablicę (kolekcję)

http://www.w3.org/TR/2000/REC-DOM-Level-2-...html#ID-A6C9094

a odwołanie się do elementu, to już innerHTML oczywiście po item(0)
artur81
no dobrze czyli rozmumiem z tego że skoro mam taką strukturę

  1. <records>
  2.   <nazwa>jakaś nazwa</nazwa>
  3.   <ulica>przykładowa ulica</ulica>
  4.  <miasto>przykładowe miasto</miasto>
  5.  <nip>jakiś nip</nip>
  6. </records>


to na początku robię:
  1. records = xml.getElementsByTagName("records");
aby pobrać całą tablicę

a następnie
nazwa =records.item(0);

tylko nie mam pojęcia gdzie i jak mam wstawić innerHTML, nie widzę zastosowania, a linku który podałeś nie mam żadnych przykładów na to.
seaquest
Google i manuale bolą?

http://developer.mozilla.org/pl/docs/DOM:element.innerHTML

Jako, że bolą nie po raz pierwszy - ostrzeżenie.
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-2025 Invision Power Services, Inc.