Вход

Просмотр полной версии : sendAndLoad


Pasquill
29.10.2008, 12:47
Здравствуйте
помогите понять, где ошибка
на кнопку в flash пишу :

on(release) {
if(_root.pole1.text && _root.pole2.text) {
var us_pole:LoadVars = new LoadVars();
us_pole.pole1 = _root.pole1.text;
us_pole.pole2 = _root.pole2.text;
trace(_root.pole1.text); //выводит значение поля 1
us_pole.sendAndLoad("us_pole.php", us_pole, "POST");
us_pole.onLoad = function(success) {
if(success) {
trace(us_pole.pole1); //выводит значение, если находит файл us_pole.php
getURL("us_pole.php", "_self");
}
}
}
}

в us_pole.php пишу :

if($_POST['pole1']) {
echo $_POST['pole1'];
echo $_POST['pole2'];
}
else {
echo '
// просто все, что необходимо для отображения flash (тоесть html весь)
';

хоть убей, не могу понять, где ошибка
(исходники прилогаются)

iNils
29.10.2008, 13:14
Данные сначала надо собрать в строку, а потом отправить одним echo, а не двумя. Второй все равно не будет работать. По сути это как два раза написать return.

Pasquill
29.10.2008, 13:57
iNils
тоесть, я так понимаю, в даной flash'ке ошибок точно нет

если имеется в виду записать:
$pole.=$html; // html сопутсвующий flash'ке
$pole.=$_POST['pole1'];
$pole.=$_POST['pole2'];
echo $pole;

то ничего не изменилось ( после нажатия кнопки на странице не появляется никаких надписей

уже и меняю
allowScriptAccess="always" на allowScriptAccess="sameDomain" и обратно
в flash _self на _blank
POST на GET (b соответсвенно в php)
или вообще на кнопку вешаю одно задание
getURL("us_pole.php", "_self", "POST");

ничего.. абсолютно

уже иду по пути наименьшего сопротивления, действую по уроку (http://www.rastyle.com/articles/index.php?id=16)
ставлю на файл result право изменять его, НО даже этот урок не работает
всемирный заговор против меня или где-то какие-то хитрые настройки, которые мне раньше не замечались и на другом хостинге были выставлены по-другому... ну ЧТО может это быть???

Mnilionic
29.10.2008, 20:37
вы сформулируйте, что хотите сделать. Судя по вашему коду, вы не понимаете что делаете.

Данные сначала надо собрать в строку, а потом отправить одним echo, а не двумя. Второй все равно не будет работать. По сути это как два раза написать return.

почему не будет?
echo '&a=1';
echo '&b=2';
это нерабочий код?

iNils
29.10.2008, 23:56
2 Mnilionic:
Не рабочий. После первого же echo, флеш больше не ждет ответа.

Mnilionic
30.10.2008, 00:38
2iNils:
не хочу говорить что вы не правы, но код рабочий :)
<?php
for( $i=0; $i<10; $i++){
echo "&var{$i}=string # {$i}";
}
?>
var obj = new LoadVars();
obj.onLoad = function(loaded){
if(loaded){
for(prop in this) txt.text+= prop + ' = ' + this[prop] + '\n';
}else txt.text = 'error';
}
obj.sendAndLoad('script.php', obj, 'post');

работает как в локале так и на сервере. :)

dimarik
30.10.2008, 01:01
Естессно, сработают оба echo.

laurisgutmanis
30.10.2008, 04:05
2 iNils: работает, работает :boredom:

Это же поток, с таким же успехом флеш могбы остановиться не прочитав и половины переменной.

Он(flash) ждет бита конца строки.


Работает на PHP уже больше года, выкидываю таким образом ошибки если есть, для дальнейшей обработки flash.

2 Pasquill:

Почти из хелпа... :mosking:

Пример:
//////////////////////////////////
var rezultat:LoadVars = new LoadVars(); //Новый обьект для приема
var sends:LoadVars = new LoadVars(); //новый объект для отсылки
var urls = 'http://flash.localhost/onload.php'; // ссылка куда посылать!



rezultat.onLoad = function(success:Boolean) {
if (success) {
_root.txt.text = rezultat.Messages; //выводит в текствый бокс
trace('OK!:'+rezultat.Messages);
trace('Result: '+rezultat.answer);
} else {
trace("Error connecting to server.");
}
};

on(release) {
if(_root.pole1.text && _root.pole2.text) {
sends.php_pole1 = _root.pole1.text;
sends.php_pole2 = _root.pole2.text;

sends.sendAndLoad(urls, rezultat, "POST"); //Посылаем!
}
}



и php к нему:
<?
Echo '&Messages=HEllo Pipla:'.$php_pole1;
Echo '&answer=it is Answer'.$php_pole2.'&';
?>


на конце всегда ставлю & так как иногда (Win/Unix/Mac) конец строки глючит, и иногда в конец переменной flash добавляет переход строки, с & его не будет 100%

iNils
30.10.2008, 10:26
Действительно работает. Тогда не понятно, почему у меня раньше только одно эхо срабатывало.:o