...ну что, продолжая копать все что может AJAX, дело дошло до файлов формата XML. Обычно такие файлы используются для сервисного хранения информации, скажем поисковики используют именно это расширение для сайтмэп. Ну да ладно, в нашем случае будет все несколько банально и даже примитивно, речь не пойдет о чем-то сверхнавороченном, а будем работать с информационным файлом музыки.
Но об этом чуть позже, а вначале пару слов о принципах, как и что.
Итак, работа с файлом будет все через тот же AJAX, о котором я уже упоминал и который по факту обращается к файлам вызывая их. При этом такой вызов можно считать интеллектуальным, так как возникает и запрос и подтверждение что такой файл или страница есть и только потом он вызывается. К тому же он особенный еще тем, что несколько "развязывает руки" JS, ведь напрямую без оператора XMLHttpRequest у языка нет прямой возможности обращаться к файлам, а тут бац и теперь наш Яваскрипт не такой уж и безобидный. Хотя тема безопасности где-то рядом, но совсем не в это статье. Могу лишь сказать в оправдание, что это запрос на чтение и не более! Поэтому не буду акцентировать внимание на этом.
В общем начинаем с того, что у нас есть файл на сервере, вот ЭТОТ. Как видите, его можно открыть по ссылке, при этом при желании отредактировать, что-либо дописать, убрать, добавить и т.д. Немного даже загну, что это что-то типа базы данных, но такой примитивной и незащищенной. Если это не столько важно, то можно продолжить следить за мыслью.
...с помощью функции и в ней запроса XMLHttpRequest и responseXML получаем данные. При этом не надо думать, что responseXML работает только с XML. Ведь наименование не более чем анахронизм, но на самом деле оно работает как для HTML, так и для XML.
Ну да ладно, вызывая этот файл далее с помощью оператора условия if, который определяет переменную и оператора getElementsByTagName, который определяет с каким тегом будем копаться, получаем нужные нам результаты, выборку из имеющегося у нас файла.
Давайте к примеру, чтобы больше без слов.
Пример 1
Теперь надо смотреть код.
Собственно здесь из примера видно как все работает. Мы вначале задаем переменную из формы ввода, которая связывается с тегом, а потом для этого тега выводим результат из файла. Само собой код можно расширить путем добавления переменных в форме выбора и операторов if и циклов. Хотя решение не очень изящное. Хотелось бы, чтобы переменная передавалась сразу в цикл, а не работала с оператором условия, тогда можно было бы избавиться от лишнего код в виде практически повторяющихся блоков.
Что же, по поводу функциональности этого всего я промолчу, может это будет кому-то надо, может нет. Но как всегда подобное может натолкнуть на мысль или стать очередным камнем в большом и красивом замке :)
Пример 2
Теперь код.
Пример 3
Пример 4
Этот пример примечателен тем, что здесь со временем меняется по очереди два условия получения результата из одного файла. То есть первоначально берется настоящая дата, а во второй раз дата следующего дня. Этот алгоритм реализован через оператор switch и как всегда лучше всего что-то работающее смотреть на практике, как это выглядит и как все-таки работает.