Просмотр полной версии : Передача данных в php
Sovnarkom
13.10.2009, 22:04
Проблема все еще актуальна. 16:05, 14.10.
Не пойму почему, но вот такой код:
btn.onPress = function() {
result_lv1 = new LoadVars();
result_lv1.onLoad = function() {
result_lv1.decode(result_lv1.str);
};
sendresult_lv1 = new LoadVars();
sendresult_lv1.action = "send";
sendresult_lv1.message = day.text;
trace (sendresult_lv1.message);
sendresult_lv1.sendAndLoad("http://domain.ru/test.php",result_lv1,"POST");
gotoAndStop(2);
day._visible = false;
};
работает только если запустить флешку из среды Flash. Если же залить ее на хостинг, то передача данных не осуществляется. Ну и php:
<?php
$action = $_REQUEST['action'] ;
$message = $_REQUEST['message'] ;
$myStr = 'Reservation request';
if ($action == "send") {
mail("username@domain.com",$myStr,"$message");
}
?>
Помогите, пожалуйста, умы великие. Что делать?
Возможно, оттого, что у вас происходит переход на 2-ой кадр до того, как происходит обмен данными.
А именно:
Когда наступает событие onLoad, вот эта приравнивание анонимной функции не успевает отработаться:
result_lv1.onLoad = function () {...
Как раз так и бывает, когда на хостинг заливают. В IDE может работать, а с сервера - уже асинхронность работы начинает сильнее сказываться, встречался с этим.
Пишите все действия в onLoad. В данном случае переход на другой кадр.
Sovnarkom
13.10.2009, 22:24
Убрал второй фрейм - сделал все в одном с помощью _visible. Результат тот же.
И да, не бейте меня сильно, если я скажу чушь, но все действия в onLoad - это так:
btn.onPress = function() {
result_lv1 = new LoadVars();
result_lv1.onLoad = function() {
result_lv1.decode(result_lv1.str);
sendresult_lv1 = new LoadVars();
sendresult_lv1.action = "send";
sendresult_lv1.message = day.text;
trace(sendresult_lv1.message);
sendresult_lv1.sendAndLoad("http://domain.ru/test.php",result_lv1,"POST");
day._visible = false;
txt._visible = false;
btn._visible = false;
echo._visible = true;
};
};
Вопрос, вот это строчка у вас что делает?
result_lv1.decode(result_lv1.str);
Sovnarkom
13.10.2009, 22:26
Честно - понятия не имею. Года два назад писал шаблон, теперь просто им пользуюсь.
Да не все-все-все нужно в onLoad было ставить, вы что!
Только gotoAndStop(2);
Метод sendAndLoad-то у вас как теперь будет вызван?
А объявление экземпляра LoadVars вы тоже засунули в его собственный обработчик...
Что такое str в экземпляре получателе? В php должна быть строка:
echo 'str=то-то и то-то'
Что-то у вас все с бору по сосенке, извините.
Если вам нужно просто почту отправить, зачем вам что-то получать от скрипта в result_lv?
Добавлено через 5 минут
btn.onPress = function() {
result_lv1 = new LoadVars();
result_lv1.onLoad = function() {
gotoAndStop(2);
day._visible = false ;
};
sendresult_lv1 = new LoadVars();
sendresult_lv1.action = 'send';
sendresult_lv1.message = day.text ;
sendresult_lv1.sendAndLoad('http://domain.ru/test.php', result_lv1, 'POST');
};
Sovnarkom
13.10.2009, 22:35
Да, Вы правы. Это относилось немного к другому.
Поставил в onLoad gotoAndStop() но результат тот же - никакого результата.
btn.onPress = function() {
result_lv1 = new LoadVars();
result_lv1.onLoad = function(success:Boolean) {
if (success) {
gotoAndStop(2);
day._visible = false ;
}
};
sendresult_lv1 = new LoadVars();
sendresult_lv1.action = 'send';
sendresult_lv1.message = day.text ;
sendresult_lv1.sendAndLoad('http://domain.ru/test.php', result_lv1, 'POST');
};
PHP должен что-то вернуть, иначе в LoadVars не сработает onLoad:
<?php
$action = $_REQUEST['action'] ;
$message = $_REQUEST['message'] ;
$myStr = 'Reservation request';
if ($action == "send") {
mail("username@domain.com",$myStr,"$message");
echo 'rezult=ok'
}
?>
Sovnarkom
13.10.2009, 22:42
Нет. Все равно не хочет отправлять с хостинга.
Стоп, я сам уже торможу. Из кнопки обработчик нужно вытащить:
result_lv1.onLoad = function(success:Boolean) {
if (success) {
gotoAndStop(2);
day._visible = false ;
}
};
result_lv1 = new LoadVars();
sendresult_lv1 = new LoadVars();
btn.onPress = function() {
sendresult_lv1.action = 'send';
sendresult_lv1.message = day.text ;
sendresult_lv1.sendAndLoad('http://domain.ru/test.php', result_lv1, 'POST');
};
<?php
$action = $_REQUEST['action'] ;
$message = $_REQUEST['message'] ;
$myStr = 'Reservation request';
if ($action == "send") {
mail("username@domain.com",$myStr,"$message");
echo 'rezult=ok';
}
?>
Sovnarkom
13.10.2009, 22:52
Error opening URL
И с одинарными кавычками, и с двойными, если это имеет значение.
проверьте эту строчку в php, я ее первоначально без точки с запятой написал:
echo 'rezult=ok';
Sovnarkom
13.10.2009, 22:58
Точку с запятой я тогда углядел - не в ней дело.
Вы написали, что это, скорее всего, из-за перехода на второй фрейм, прежде чем произойдет обмен данными. И я ответил, что убрал его, использовав _visible. Я, конечно, далеко не профессионал, но разве удаление второго фрейма не решает проблему, над которой мы бьемся (ну хорошо, Вы бьетесь, я наблюдаю :) )?
Гм. Я тоже не профи. тестируйте. Сделайте один кадр.
В кадре запишите:
result_lv1.onLoad = function(success:Boolean) {
if (success) {
trace('данные отправлены');
trace(this.rezult);
}
};
result_lv1 = new LoadVars();
sendresult_lv1 = new LoadVars();
btn.onPress = function() {
sendresult_lv1.action = 'send';
sendresult_lv1.message = day.text ;
sendresult_lv1.sendAndLoad('http://domain.ru/test.php', result_lv1, 'POST');
};
php: обойдемся пока безо всякой отправки почты.
<?php
echo 'rezult=ok';
?>
Если скрипт будет вызван успешно, что строка rezult=ok должна загрузиться в result_lv1 и trace должен это показать.
Sovnarkom
13.10.2009, 23:10
трейс не показал ни того (rezult=ok), ни другого (данные отправлены).
Хорошо, подождите, проверю сам.
Где-то косяк.
Sovnarkom
13.10.2009, 23:14
Ну понятно, что из IDE. Как я иначе увижу показания trace.
Вообще планируется скрипт разместить на другом хостинге, потому что на том, где флешка, он вообще не работает. А пробую я по-всякому. Сейчас лишь бы заработало. К чему это все? Ах да - да, на том же хостинге.
По вашей ссылке:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/tu2.ru/b/bl/bludugululu/htdocs/www/test.php on line 2
Sovnarkom
13.10.2009, 23:25
Я в курсе.
Содержание файла:
<?php
echo 'rezult=ok';
?>
То есть именно то, что вы и говорили.
Итак, просто уже усталость сказывается, грубейшие ошибки делаю, строки с объявлением должны идти до метода. На моем хостинге работает.
result_lv1 = new LoadVars();
sendresult_lv1 = new LoadVars();
result_lv1.onLoad = function(success:Boolean) {
if (success) {
test_tf.text = 'данные отправлены';
//trace('данные отправлены');
// trace(this.rezult);
}
};
btn.onPress = function() {
test_tf.text = 'отправляем';
sendresult_lv1.action = 'send';
//sendresult_lv1.message = day.text ;
sendresult_lv1.sendAndLoad('http://www.xxxx.ru/xxx/test.php', result_lv1, 'POST');
};
Сейчас с вашим проверим.
Добавлено через 1 минуту
Вышеприведенный код работает и с вашей ссылкой на скрипт.
Теперь наращивайте ваши переменные в коде AS и заменяйте скрипт на отправку ('rez=ok' нужно оставить).
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.