Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Konwersja XML do tablicy w JavaScript

Konwersja responseText do tablicy

Obiekt String JavaScriptu nie ma właściwości będącej odpowiednikiem znanej z PHP funkcji explode(). To nie jest wielka niedogodność gdyż napisanie funkcji rozbijającej tekst na poszczególne elementy zawarte pomiędzy zdefiniowanymi separatorami jest proste.

var ToArray = {
  version: '1.0',
  
  str2array: function (string, separator) {
    if (!separator) {
      separator = ';';
    }
    var result=string.split(separator);
    return result;
  },
}

Funkcja jest statyczną metodą stworzoneg obiektu ToArray, który zostanie jeszcze troszkę rozbudowany w dalszej części tutoriala.

Skrypt po stronie serwera - w naszym przypadku napisany w PHP - powinien zwracać wyniki w postaci tekstu, podzielonego na poszczególne części wybranym separatorem (linią pionową).

<?php
  echo 'styczeń|luty|marzec|kwiecień|maj|czerwiec|lipiec|sierpień|wrzesień|październik|listopad|grudzień';
?>

Właściwość responseText obiektu wyniku zwróconego przez AdvancedAJAX, po przekonwertowaniu przez funkcję str2array() przekształcona zostanie do postaci tablicy jednowymiarowej umożliwiającej łatwy dostęp do poszczególnych fragmentów tekstu.

function updateList() {
  advAJAX.get({
    url: "list.str.php",
    onSuccess : function(obj) {
      var result = ToArray.str2array(obj.responseText, '|');
      for(var i = 0; i < result.length; i++) {
        $("list").options[i] = new Option(result[i],result[i]);
      }
    }
  });
}

W powyższym przykładzie użyta została funkcja $() zaczerpnięta z frameworku dla JavaScriptu o wymownej nazwie prototype.js. Funkcja ta jest używana także w kolejnych przykładach.

function $(id) {
  return document.getElementById(id);
}

Kod XHTML ogranicza się do:

<button onclick="updateList();">Update list</button>
<select id="list"></select>

Zmiana responseText w tablicę ułatwia porcjowanie danych, jednak realizująca to zadanie funkcja - przynajmniej napisana przeze mnie - umożliwia stworzenie jedynie płaskiej tablicy. Ciekawszym rozwiązaniem byłoby przekształcenie zawartości pliku XML w tablicę wielowymiarową. Zadanie to jest już trudniejsze ponieważ trzeba się zmierzyć z trudnym procesem parsowania.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (0)
Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2022 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System