![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam ciężką sytuację, dość dziwną. Posiadam kod JS pewnej aplikacji. Nie mogę go zmienić, po prostu go znam. I w tym cały problem - bez zmian kodu JS mam do tego dopisać kod działający po stronie serwera, w PHP. Fragment funkcji dołączonej do zdarzenia onreadystatechange wygląda tak: Kod if(request.readyState == 4){ if(request.status == 200){ if(formObjTyp.length > 0 && formObjTyp == "input"){ var resp = request.responseText; // Wartość zwrotna jest tablicą. var func = new Function("return "+resp); var objt = func(); var sel = document.createElement("select"); sel.setAttribute("name","countries"); createOptions(sel,objt); var newsel = document.getElementById("newsel"); reset(newsel); newsel.appendChild(sel); } Sęk tkwi w funkcji createOptions: Kod function createOptions(sel, _options) { if (_options == null || _options.length == 0) { return; } var opt = null; for (var i = 0; i < _options.length; i++) { opt=document.createElement("option"); opt.appendChild(document.createTextNode(_options[i])); sel.appendChild(opt); } } Nie mogę zmienić tego kodu. No a funkcja createOptions() spodziewa się tablicy jako drugiego parametru. Teraz pytanie, jak ułożyć taki kod PHP, żeby w zmiennej objt była tablica... (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) Jeśli chodzi o mój wysiłek, to próbowałem z XML. Ale wtedy krzaczy się konstruktor Function("return" +resp), chyba że coś źle robiłem... Ten post edytował Hazel 10.02.2008, 13:00:41 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No, hehe, mamy podobne zdanie.
Kodu JS nie tworzyłem ja, dałem go tak jak jest - też mnie zdziwiła obecność zupełnie niepotrzebnego konstruktora funkcji, ale myślałem że się nie znam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) A ten konstruktor mi strasznie psuł koncepcję. No dobra, zrobiłem tak, że linia zwracająca tego konstruktora wygląda tak: return { 0: 'wartosc1', 1: 'wartosc2', 2: 'wartosc3' } Ale jak kontroluję właściwość length zmiennej, która otrzymuje taką wartość, to jest to 47, czyli widzi ciąg, a nie tablicę. Zresztą, abstrakcyjnie oderwany od projektu kod: zwraca niestety undefined. Na logikę powinien chyba zwrócić ilość elementów tablicy, czyli 3. A dokładnie o coś takiego chodzi w tamtym kodzie, z którym pracuję. Coś robię nie tak? Ten post edytował Hazel 10.02.2008, 19:06:30 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 11:32 |