Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js][ajax][php][xml] Wartość zwrotna tablicą
Hazel
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Hazel
post
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:

  1. var objt = false;
  2. function zwroc()
  3. {
  4. return { 0: 'wartosc 1', 1: 'wartosc 2', 2: 'wartosc 3' };
  5. }
  6. function przypisz()
  7. {
  8. objt = zwroc();
  9. }
  10. <button onclick="przypisz();alert(objt.length);">


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 11:32