Я чувствую себя глупо, задавая этот вопрос, но я боролся с ним часами, и я не знаю, куда еще обратиться.
У меня есть флэш-форма, которая выполняет запрос POST к php-скрипту, а затем отображает вывод указанного скрипта. Для простоты предположим, что это PHP-скрипт:
echo 'Mail sent to: ' . $_POST['recipientEmail'];
Когда я отправляю форму, я вижу это на сетевой вкладке Firebug в строке, сделанной запросом POST:
Referer: http://example.com/my.swf
Content-type: text/html
Content-length: 68
recipientEmail=example@example.com
Все хорошо на поверхности. Пост сделан, он отправил правильную переменную в скрипт. Но когда ответ возвращается, вот что я вижу в своей трассировке Flash:
Mail sent to:
Другими словами, $ _POST ['receientEmail'] был потерян после того, как запрос вышел из моего браузера.
Как вы думаете, что здесь происходит? Сценарий и файл swf находятся в одном домене и на одном сервере.
РЕДАКТИРОВАТЬ: Я только что попытался нажать тот же сценарий из формы HTML, и он ловит заголовок $ _POST. Так что это только не ловит его, когда он отправляется Flash. Вкладка «Пост» в Firebug выглядит немного иначе, чем в Flash:
recipientEmail example@example.com
submit Submit
Обратите внимание, что каждая переменная находится в отдельной строке.
РЕДАКТИРОВАТЬ: Вот соответствующий код AS3, который делает представление:
var _gateway:String = Share.getGateway();
var request:URLRequest;
var variables:URLVariables = new URLVariables();
var loader:URLLoader = new URLLoader();
request = new URLRequest(_gateway);
request.contentType = 'text/html';
request.method = URLRequestMethod.POST;
variables.senderName = senderName.text;
variables.recipientEmail = recipientEmail.text;
variables.senderMessage = senderMessage.text;
request.data = variables;
try {
loader.load(request);
}catch (error:Error) {
Debug.trace("Unable to load requested document.");
}