Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Обновление файлов из которых ролик берет данные (http://www.flasher.ru/forum/showthread.php?t=120128)

chugart 13.01.2009 02:37

Обновление файлов из которых ролик берет данные
 
Добрый день!
У меня есть ролик кторый строит некторый график. Данные для графика ролик загружает из xml расположенного на сервере.
Файл xml обновляется администратором (заливается новый файл с новыми данными).

Проблема:
при обновлении файла xml флэш ролик его перестает видеть (в тех текстовых полях в которые я заgисываю значения из файла прописывается "underfined"). Флэш его не видит до тех пор пока не этот файл xml не отроешь через браузер.

Как победить этот глюк.
Загружаю данные таким образом

Код AS1/AS2:

//загрузка xml с данными 
var mnth_xml:XML = new XML();
mnth_xml.ignoreWhite = true; //игнорировать отсnупы и табуляцию в файле
mnth_xml.load( "http://www.domen.ru/ss.xml" ); //загружаем xml
 
mnth_xml.onLoad = function (suc:Boolean) {
        var dtd:XMLNode = mnth_xml.firstChild;
 
        _root.mn1.mn1TextVar = dtd.childNodes[2].attributes.text;
        _root.mn2.mn2TextVar = dtd.childNodes[1].attributes.text;
        _root.mn3.mn3TextVar = dtd.childNodes[0].attributes.text;
}

От чего может возникнуть этот глюк и как ег опобедить.
Спасибо!

zurkis 13.01.2009 03:17

ну если файл xml заливаеться заново с новыми данными, то попробуй после заливки обновить страницу браузера в которой твоя флешка, при загрузке флешка считает новые данные из xml, если тебе надо чтоб данные считывались как-то по другому, тут другой способ есть.
Либо попробуй считывать xml с параметром, потому как xml файл кэшируеться и возможно не все данные подхватывает при обновлении

chugart 13.01.2009 03:52

Ну конечно же я обновляю страницу браузера...:).
Проблема в том что после заливки обновленного xml флэш перестает его видеть. т.е. тотже самый ролик считывает файл с таким же названием по такому же адресу... все тоже самое что и до обновления.
И ролик начинает видеть xml только после того как из браузера откроешь сам этот xml.
Я думал что проблема какянить с кэшем. Кэш в php везде отключил:
PHP код:

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
  
header('Cache-Control: no-store, no-cache, must-revalidate'); 
  
header('Cache-Control: post-check=0, pre-check=0'FALSE); 
  
header('Pragma: no-cache'); 

Здесь какая то фишка обновления или кэширования. Надеюсь на вашу помощь !

wvxvw 13.01.2009 04:22

А каким образом файл отдается?
ЗЫ. вариант с рандомным параметром добавленным к xешу при запросе ХМЛя - самый простой, но лучше переименовывать ХМЛ и сообщать об этом флешу во FlashVars каждый раз, когда нужно обновить (чтобы, когда не нужно обновлять, все-таки брать его из кеша).

chugart 13.01.2009 15:15

Т.е., насколько я понимаю, в случае переименования файла, нужно руками изменять соответвующую vars в текстовом файле например. которая отвечает за имя загружаемого xml ?

Добавлено через 29 минут
Вроде с загрузкой с параметром все получилось. НО возник следующий вопрос.
Сайт доступен по доменам с www и без www, т.е. http://www.domen.ru и http://domen.ru. На хосте прописан псевдоним для домена.

В AS загрузка файла идет с домена вида http://www.domen.ru/file.xml. И соответсвенно когда загружаешь сайт http://domen.ru файл xml не подцепляется (потомучто видимо флэш считает что он лежит в другом домене, а загрузка файлов с других доменов отключена).

НУжно чтобы заходя и на http://www.domen.ru и на http://domen.ru ролик нормально отображался. Что нужно прописать в AS чтобы домены с www и без не различались. Может чтонибудь нужно на хосте прописать?

Спасибо!

Добавлено через 53 часа 31 минуту
на хосте эту пролему решить не удалось.
В AS просто написал
Код AS1/AS2:

var domen:String = "http://domen.ru"; //в случае если пользователь зашел на домен без www 
my_xml.loadXML(domen +"myxml?" + rnd ); //загрузка xml с заранее сгенерирвоанным случайным параметром
my_xml.Load = function (suc:Boolean) {
    if ( !suc && (domen == "http://domen.ru") ) {//в том случае если пользователь зашел на домен с www
        domen = "http://www.domen.ru"; ..заменить домен на имя с www
        my_xml.loadXML(domen +"myxml?" + rnd ); //загрузка xml с заранее сгенерирвоанным случайным параметром
    }
    else { //обработка и дальнейшие дейсвия }
}


wvxvw 16.01.2009 15:24

Да, нужно было на хосте положить crossdomain.xml описывающий политики безопасности и разрешающий загрузку с поддоменов этого сайта. А вообще, если по уму, то в таком случае делать ссылки абсолютными - самому себе палки в колеса ставить.

chugart 18.01.2009 02:58

А можно не относительные ссылки ставить в моем случае?
Насколько я понимаю ролик загружается в браузере пользователя и работает на локальной машине и именно с локальной машины загружает уже в себя xml с домена. Как в таком случае указать не абсолютный путь?

Nirth 18.01.2009 09:53

Поставить http:// =)

chugart 18.01.2009 15:35

Поясните плз. Какой тогда синтаксис, нигде не встрачал такой записи?
Т.е. если у меня на хосте лежит ролик в папке http://domen.ru/flash/1 и там же лежит файл xml, то как я должен прописать отноитльный путь?
Вот так?
Код AS1/AS2:

my_xml.loadXML("http://")

или
Код AS1/AS2:

my_xml.loadXML("http://./flash/1")

?

mre 20.01.2009 16:55

Код AS1/AS2:

my_xml.loadXML("fileName.xml");



Часовой пояс GMT +4, время: 11:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.