PDA

Просмотр полной версии : почему не работает URLLoader после публикации


prettynim
28.12.2010, 17:40
Подскажите что я делаю не так.
У меня галерея, когда просматривают картинку из галереи вызываю функцию, в которой передаю id изображения скрипту php, а он возвращает количество голосов за фото. Но беда в том, что во флеше, когда я нажимаю ctrl + Enter все работает, а когда заливаю на сервер то не работает, помогите разобраться, в чем разница что я открываю во флеше и в том что заливаю на сервер? Может проблемы в безопасности или еще в чем.
Вот код


var url:String = "http://www.сайт.ws/foto/loaddata.php";

function LoadPHP(e:int):void{
var loader:URLLoader = new URLLoader();
var URLrequest:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();

variables.img = e;
URLrequest.method = URLRequestMethod.POST;
URLrequest.data = variables;
loader.load(URLrequest);
loader.addEventListener(Event.COMPLETE, LoadVoicePHP);
}

function LoadVoicePHP(e:Event){
var loader:URLLoader = e.target as URLLoader;
if(loader != null) {
star_text.voice.text = loader.data;
trace(loader.data);
}
}

и вызываю LoadPHP(id);

Zebestov
28.12.2010, 18:10
Оформи код тегами (выдели его и нажми кнопку # на панельке редактора).

prettynim
28.12.2010, 18:20
оформила

Zebestov
28.12.2010, 18:23
Ну "не работает" — это не описание проблемы. Ошибок никаких не выдает? (нужно поставить debug-версию FP)

Приложение располагается на том же http://www.сайт.ws?

prettynim
28.12.2010, 18:37
у меня все находится в папке /foto/ на сайте. Когда я работаю в программе flash то сразу беру файлы с сервера, ctrl + enter все работает, ошибок компиляции нету. А потом после публикации заливаю на сайт и в месте где должно быть показано количество голосов без изменений. http://myjournal.ws/foto/index.php

Добавлено через 3 минуты
я в флеше прописываю ссылку на php файл
$img = intval($_POST['img']);

//для выборки количества голосов
if(isset($_POST['img'])){
$res = mysql_query("SELECT * FROM `flashGallery` WHERE id = '".$img."' ");
$num = mysql_num_rows($res);
if($num != 0){
$result = mysql_fetch_array($res);
$voice = $result['voice'];
echo $voice;
}else{
echo "0";
}
}
Получается что либо
loader.addEventListener(Event.COMPLETE, LoadVoicePHP);
не работает и не запускает дальше скрипт либо сама функция LoadPHP не правильная, но тогда почему у меня в самой программе все работает? и все связывается уже с самим сайтом, т.е. проблемы с денвером тут не может быть

iflamberg
28.12.2010, 18:48
Точно. Есть ошибка:

Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: http://myjournal.ws/foto/projectGallery.swf не может загрузить данные из http://www.myjournal.ws/foto/loaddata.php.
at projectGallery_fla::MainTimeline/LoadPHP()
at projectGallery_fla::MainTimeline/generateScrollForSpecifiedCategory()
at MethodInfo-1038()

Попробуйте написать имя сайта без "www" в url:String

Zebestov
28.12.2010, 18:53
Я тут проверил — у тебя запросы не отправляются при смене фотографии.
Попробуй внимательно посмотреть в том месте, где ты вызываешь LoadPHP().

prettynim
28.12.2010, 18:54
РАБОТАЕТ!!!!! Я убрала www. скажите а почему такая ошибка? и чем вы ее нашли?

Zebestov
28.12.2010, 18:56
Кстати у меня без www ошибок не давало, но кроссдоменник постоянно дергало — а его там нет.

Создай файл crossdomain.xml


<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="myjournal.ws" />
<allow-access-from domain="www.myjournal.ws" />
</cross-domain-policy>


и положи его в корень своего сайта.

prettynim
28.12.2010, 18:57
а его подключать к скрипту нужно?

Zebestov
28.12.2010, 18:58
нет. он просто должен быть )

prettynim
28.12.2010, 18:59
спасибо, не знала об этом.

Zebestov
28.12.2010, 19:00
на фотках ты? )

prettynim
28.12.2010, 19:01
и я и сестра, все фото в ход пошли когда загрузку делала)))

Добавлено через 2 минуты
спасибо за помощь

iflamberg
28.12.2010, 19:20
скажите а почему такая ошибка?
Политика флеша запрещает отсылать информацию скриптам из одного домена, находясь в другом. "www.site.ws" и "site.ws" - это два разных домена. Чтобы разрешить выполение скриптов чужим доменам, используется файлик crossdomain.xml. Гуглите политику безопасности(security policy) flash.

и чем вы ее нашли?
Нужно скачать и установить debug-версии плееров отсюда (http://www.adobe.com/support/flashplayer/downloads.html). ActiveX - для IE. Plugin - для лисы и оперы.