Хочу сделать живой поиск данные грузятся с базы данных на сервере.
пишу на flex. Вот часть кода:

Код AS3:
package
{import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import mx.controls.Alert;
public class SClass
{
private var loaded:URLLoader;
private var nowEasySearchText:String;public function SClass()
{searchString.addEventListener(TextOperationEvent.CHANGE, searchString_textInputHandler);
}
private function searchString_textInputHandler(event:TextOperationEvent):void
{if(searchString.text != null)
{if(loaded != null)
{ try
{
loaded.data = null;
loaded.close();
loaded = null;
}
catch(e:Error)
{
loaded.data = null;
loaded = null;
}
}
var variable:URLVariables = new URLVariables();
variable.text = nowEasySearchText = searchString.text;
loaded = new URLLoader();
loaded.dataFormat = URLLoaderDataFormat.TEXT;
var request:URLRequest = new URLRequest("http://[domanname]/index.php");
request.data = variable;
request.method = URLRequestMethod.POST;
loaded.addEventListener(Event.COMPLETE, loaderCompleteHandler);
loaded.addEventListener(Event.OPEN, openHandler);
loaded.addEventListener(ProgressEvent.PROGRESS, progressHandler);
try
{loaded.load(request);
}
catch (error:Error)
{Alert.show(error.message);
}
}
}
private function loaderCompleteHandler(event:Event):void
{loaded.removeEventListener(Event.COMPLETE, loaderCompleteHandler);
loaded.removeEventListener(Event.OPEN, openHandler);
loaded.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
trace(event.target.data)
{
private function openHandler(event:Event):void
{loaded.data = null;
{
private function progressHandler(event:ProgressEvent):void
{if(searchString.text != nowEasySearchText)
{loaded.data = null;
loaded.close();
loaded = null;
}
{
}
}
Помогите разобраться почему не работает корректно. При быстром вводе иногда возникает ошибка потока.
В остальных случаях данные забиваются как бы в стек и выводятся медленно друг за другом т.е. вначале ответ на поиск по первой букве потом по первым двум и т.д.