Boa Tarde Pessoal,
Tenho a seguinte situação:
A função 'requestManager' chama a função 'sendRequest' que deve realizar a chamada PHP para buscar informações no banco, após realizar a chamada os dados retornados são resgatados pela função 'returnRequest' e aplicados na variável global 'eventArray', porém quando retorno para a execução da função 'requestManager' a variável está vázia. Alguém sabe porque ocorre isso?
Segue a lista de eventos:
requestManager // executa o método sendRequest
sendRequest // realiza a consulta no PHP e traz o resultado
returnRequest // recolhe o resultado e lança o total de valores (7) na variável global, printa no OUTPUT (7) como nº de registros na variável global
requestManager // retorna a variável global e printa no OUTPUT (0) como nº de registros na variável global
Por que quando a execução é retornada para o método 'requestManager' a variável volta a ficar vazia?
Segue o código:
package src.lib.php {
import flash.net.*;
import flash.events.Event;
public class PHPManager{
public var eventArray:Array = new Array();
public function requestManager(requestString:String, variables:URLVariables):Array{
this.sendRequest(requestString, variables);
trace(eventArray.length); // aqui ele traz 0(zero)
return eventArray;
}
public function sendRequest(requestString:String, variables:URLVariables):void{
var urlRequest:String;
urlRequest = "http://localhost/GAMEPROJECT/" + requestString;
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest(urlRequest);
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
// varLoader.addEventListener(Event.COMPLETE, validarUsuario);
// Send the data to the php file
varLoader.load(varSend);
varLoader.addEventListener(Event.COMPLETE, returnRequest);
}
public function returnRequest(event:Event):void{
var phpResultManager:PHPResultManager = new PHPResultManager();
trace(eventArray.length); // aqui ele traz 7(sete)
eventArray = phpResultManager.switchClassOption(event);
}
}
}
Publicidade
|
|
Page 1 of 1
Array ficando nulo após evento AS3 Array ficando nulo após evento de request
#2
Posted 13 November 2011 - 06:35 PM
Vinicius Jose, on 13 November 2011 - 04:43 PM, said:
Boa Tarde Pessoal,
Tenho a seguinte situação:
A função 'requestManager' chama a função 'sendRequest' que deve realizar a chamada PHP para buscar informações no banco, após realizar a chamada os dados retornados são resgatados pela função 'returnRequest' e aplicados na variável global 'eventArray', porém quando retorno para a execução da função 'requestManager' a variável está vázia. Alguém sabe porque ocorre isso?
Segue a lista de eventos:
requestManager // executa o método sendRequest
sendRequest // realiza a consulta no PHP e traz o resultado
returnRequest // recolhe o resultado e lança o total de valores (7) na variável global, printa no OUTPUT (7) como nº de registros na variável global
requestManager // retorna a variável global e printa no OUTPUT (0) como nº de registros na variável global
Por que quando a execução é retornada para o método 'requestManager' a variável volta a ficar vazia?
Segue o código:
package src.lib.php {
import flash.net.*;
import flash.events.Event;
public class PHPManager{
public var eventArray:Array = new Array();
public function requestManager(requestString:String, variables:URLVariables):Array{
this.sendRequest(requestString, variables);
trace(eventArray.length); // aqui ele traz 0(zero)
return eventArray;
}
public function sendRequest(requestString:String, variables:URLVariables):void{
var urlRequest:String;
urlRequest = "http://localhost/GAMEPROJECT/" + requestString;
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest(urlRequest);
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
// varLoader.addEventListener(Event.COMPLETE, validarUsuario);
// Send the data to the php file
varLoader.load(varSend);
varLoader.addEventListener(Event.COMPLETE, returnRequest);
}
public function returnRequest(event:Event):void{
var phpResultManager:PHPResultManager = new PHPResultManager();
trace(eventArray.length); // aqui ele traz 7(sete)
eventArray = phpResultManager.switchClassOption(event);
}
}
}
Tenho a seguinte situação:
A função 'requestManager' chama a função 'sendRequest' que deve realizar a chamada PHP para buscar informações no banco, após realizar a chamada os dados retornados são resgatados pela função 'returnRequest' e aplicados na variável global 'eventArray', porém quando retorno para a execução da função 'requestManager' a variável está vázia. Alguém sabe porque ocorre isso?
Segue a lista de eventos:
requestManager // executa o método sendRequest
sendRequest // realiza a consulta no PHP e traz o resultado
returnRequest // recolhe o resultado e lança o total de valores (7) na variável global, printa no OUTPUT (7) como nº de registros na variável global
requestManager // retorna a variável global e printa no OUTPUT (0) como nº de registros na variável global
Por que quando a execução é retornada para o método 'requestManager' a variável volta a ficar vazia?
Segue o código:
package src.lib.php {
import flash.net.*;
import flash.events.Event;
public class PHPManager{
public var eventArray:Array = new Array();
public function requestManager(requestString:String, variables:URLVariables):Array{
this.sendRequest(requestString, variables);
trace(eventArray.length); // aqui ele traz 0(zero)
return eventArray;
}
public function sendRequest(requestString:String, variables:URLVariables):void{
var urlRequest:String;
urlRequest = "http://localhost/GAMEPROJECT/" + requestString;
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest(urlRequest);
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
// varLoader.addEventListener(Event.COMPLETE, validarUsuario);
// Send the data to the php file
varLoader.load(varSend);
varLoader.addEventListener(Event.COMPLETE, returnRequest);
}
public function returnRequest(event:Event):void{
var phpResultManager:PHPResultManager = new PHPResultManager();
trace(eventArray.length); // aqui ele traz 7(sete)
eventArray = phpResultManager.switchClassOption(event);
}
}
}
Boa Noite Pessoal,
Estive verificando o código e eu comecei a avaliar o tempo de execução dos métodos, portanto avaliei em que ordem seria impresso os valores que estão no código, isso me mostra quem está sendo executado primeiro. Para minha supresa descobri que a resquisição PHP é realizada em background, sendo assim, ele entra no método 'sendRequest' realiza as tarefas e ao mesmo tempo da continuidade ao código do método 'requestManager'.
Aqui segue o tempo de execução do marcador 1 e marcador 2 exibido no trace:
1 Sun Nov 13 18:31:45 GMT-0200 2011 782
2 Sun Nov 13 18:31:45 GMT-0200 2011 819
Aqui segue o novo código, só possuí duas linhas novas:
package src.lib.php {
import flash.net.*;
import flash.events.Event;
public class PHPManager{
public var eventArray:Array = new Array();
public function requestManager(requestString:String, variables:URLVariables):Array{
sendRequest(requestString, variables);
var data_hora:Date = new Date();
trace(" 1 " + data_hora + " " + data_hora.milliseconds);
return eventArray;
}
public function sendRequest(requestString:String, variables:URLVariables):void{
var urlRequest:String;
urlRequest = "http://localhost/GAMEPROJECT/" + requestString;
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest(urlRequest);
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
// varLoader.addEventListener(Event.COMPLETE, validarUsuario);
// Send the data to the php file
varLoader.load(varSend);
varLoader.addEventListener(Event.COMPLETE, returnRequest);
}
public function returnRequest(event:Event):void{
var phpResultManager:PHPResultManager = new PHPResultManager();
eventArray = phpResultManager.switchClassOption(event);
var data_hora:Date = new Date();
trace(" 2 " + data_hora + " " + data_hora.milliseconds);
}
}
}
Alguém tem alguma idéia de como posso fazer a execução estruturada do código, sem que ele execute essas tarefas simultaneamente?
#3
Posted 13 November 2011 - 07:01 PM
Melhor consegui filtrar mais ainda o erro:
public function sendRequest(requestString:String, variables:URLVariables):void{
var urlRequest:String;
urlRequest = "http://localhost/GAMEPROJECT/" + requestString;
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest(urlRequest);
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
// varLoader.addEventListener(Event.COMPLETE, validarUsuario);
// Send the data to the php file
varLoader.load(varSend);
varLoader.addEventListener(Event.COMPLETE, returnRequest);
}
Até a linha em vermelha ele executa o código estruturado passo-a-passo normalmente, apartir dai ele começa a executar o método 'returnRequest' e o método 'requestManager' simultaneamente.
public function sendRequest(requestString:String, variables:URLVariables):void{
var urlRequest:String;
urlRequest = "http://localhost/GAMEPROJECT/" + requestString;
// Build the varSend variable
// Be sure you place the proper location reference to your PHP config file here
var varSend:URLRequest = new URLRequest(urlRequest);
varSend.method = URLRequestMethod.POST;
varSend.data = variables;
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
// varLoader.addEventListener(Event.COMPLETE, validarUsuario);
// Send the data to the php file
varLoader.load(varSend);
varLoader.addEventListener(Event.COMPLETE, returnRequest);
}
Até a linha em vermelha ele executa o código estruturado passo-a-passo normalmente, apartir dai ele começa a executar o método 'returnRequest' e o método 'requestManager' simultaneamente.
Share this topic:
Page 1 of 1
Similar Topics
| Topic | Forum | Started By | Stats | Last Post Info | |
|---|---|---|---|---|---|
|
Chefe de tecnologia da Motorola deixa companhia após 23 anos
|
Notícias |
Notícias
|
|
|
|
Usuários se enfurecem com Sony após invasão à rede do PlayStation
|
Notícias |
Notícias
|
|
|
|
Novo iPad passa por testes após relatos de calor excessivo
|
Notícias |
Notícias
|
|
|
|
Investidores ainda apostam em ações da Apple
|
Notícias |
Notícias
|
|
|
|
Recuperar registros após inclusão
|
PHP |
verde
|
|
|
|
Em evento do Facebook, George Bush faz piadas com Mark Zuckerberg
|
Notícias |
Notícias
|
|
|
|
Após compra da aQuantive, MS anuncia novo grupo de publicidade online
|
Notícias |
Notícias
|
|
|
|
Sony tem queda no lucro após problemas com PS3 e ofensiva do Wii
|
Notícias |
Notícias
|
|
Publicidade
|
|

Help













