Просмотр полной версии : Обмен данными с PHP
Подскажите где почитать как с помощью AS3 отослать и получить переменные с PHP скрипта. В livdocs как то смутно :( о том, что касается метода URLVariables.decode.
К примеру
import flash.utils.*;
import flash.net.*;
import flash.events.*;
function Send(){
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
var request:URLRequest = new URLRequest("http://localhost/request.php");
var variables:URLVariables = new URLVariables();
variables.val = "Hello";
request.data = variables;
request.method = URLRequestMethod.POST;
loader.load(request);
}
function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
var vars:URLVariables = new URLVariables(loader.data);
trace("Ответ " + vars.answer);
}
Send();
PHP скрипт request.php упрощен
<?
$ans = "answer=by";
echo $ans;
?>
При этом раскладе компилятор выдает ошибку 2101. Хотелось бы простой пример получения переменных в плеер
а что такое ошибка 2101? (в смысле Description какой?)
да кстати а зачем ты проверяешь data, надо ведь result?
2101 - The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
И result чего, извините?
Моя ошибка, я перепутал с mx.rpc.http.HTTPService.
Вот посмотри мой пример работы с пхп скриптом
package eu.orangeflash.oblogs.data.rss
{
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import eu.orangeflash.oblogs.events.FeedLoaderEvent;
import eu.orangeflash.oblogs.data.FeedLoader;
import eu.orangeflash.oblogs.data.IProvider;
import flash.net.URLVariables;
/**
* @Author Nirth
* @see IProvider, FeedLoader.
*
* This class should be created by IProvider implementor, do not use this class directly.
*/
public class RSSProvider extends EventDispatcher implements IProvider
{
private var loader:URLLoader = new URLLoader();
private var request:URLRequest = new URLRequest("http://lab.orangeflash.eu/flex2/oblogs/proxy.php");
private var urlVars:URLVariables = new URLVariables();
/**
* Constructor, creates new RSSProvider instance. this class is not intended to be used directly.
* Use <code>IProvider</code> interface instead.
*
*/
public function RSSProvider()
{
request.data = urlVars;
loader.addEventListener(Event.COMPLETE,resultRecieved);
}
/**
* Method, implementation of <code>IProvider.getPosts(params:Array);</code>, see IProvider for details.
*
* @param params Array of parameters. In this particular case we use only first param,
* that is actual RSS feed url.
* @return Noting.
*/
public function getPosts(params:Array):void
{
urlVars.rss = params[0];
loader.load(request);
}
/**
* @private
* Event handler for Event.COMPLETE event.
*/
private function resultRecieved(evt:Event):void {
dispatchEvent(new FeedLoaderEvent(FeedLoaderEvent.RESULT,evt.target.data,FeedLoader.RSS));
}
}
}
Мне нужны были тектовые данные - поэтому я напрямую использовал loader.data, может попробывать декодировать данные вручную, нежели использовать встроеный парсер в URLVariables.
P.S. а зачем ты декоддируешь ответ? он же уже в примлимом виде должен быть, по крайней мере насколько я знаю PHP посылает его нормально.
Вроде разобрался.
function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
//var vars:URLVariables = new URLVariables(loader.data); НЕ НАДО!
trace("Ответ " + loader.data);
}
Так все работает )
trace умер? С помощью сего нехитрого средства надо проверять, пришли ли данные, есть ли они, верные ли они. Неужели нельзя проверить, а?
Нет, надо кучу кода написать, а потом искать ошибку…
И, кстати, где у тебя в коде метод decode, который был вызван?
etc что с тобой=)?
Flash33 вызывал trace=)
А метод decode вообщето вызывается из конструктора URLVariables ;)
Про trace я говорил в том смысле, что надо проверять не в конце трейсом, а всё подряд, начиная от event.target, loader.data и т.п.
Сама ошибка указывает на то, что в loader.data что-то не так. Почему нельзя это протрейсить, а сразу бежать на форум и спрашивать, я вот этого не понимаю…
Про decode я уж понял, что в конструкторе, это ладно. Хотя тоже не очевидно, спецом его никто не вызывал, а ошибка про него :)
гы гы, а я недавно на форуме по NET 3 спросил как загружать картинку=)
Могу только посочувствовать :D
не, мне чувак из Microsoft ответил=) я потом его еще два дня мучал=)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.