Machen HTTPRequest und die erste Antwort (Adobe Flex)
Im Versuch, um eine HTTP-Anforderung in Adobe Flex (Actionscript), wie folgt:
var p:PersonSearchController = new PersonSearchController();
showAlertDialog();
p.search(sc);
alert.cancel();
navigator.pushView(views.PersonSearchResults, +p.getResp());
Also im Grunde, bevor die Suche bekommen wir einen "Suche..." AlertDialog-box, wenn die Suche abgeschlossen ist, das Dialogfeld verschwindet, und die Ergebnisse Bildschirm geschoben wird, auf den Bildschirm...
Hier ist die search-Methode:
function search{
var requestSender:URLLoader= new URLLoader();
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
var urlRequest :URLRequest = new URLRequest("http://airpoint05:8888/MPS2/PersonSearch");
var msg:String = "blah";
/* Setup HTTP Request */
urlRequest.data = msg;
urlRequest.contentType = "application/x-www-form-urlencoded";
urlRequest.method = URLRequestMethod.POST;
requestSender.load(urlRequest);
}
Und hier ist die Funktion completeHandler:
/* URL has completed and got a response */
private function completeHandler(event:Event):void
{
var response:URLLoader = URLLoader(event.target);
this.res = URLLoader(event.target).data;
trace(this.res);
response.close();
}
Wenn diese Linie heißt: navigator.pushView(views.PersonSearchResults, +p.getResp());
p.getResp() ist nichts anderes als die Antwort noch nicht kam noch zurück. Ich möchte das Programm im wesentlichen zu blockieren, bis die HTTPResponse empfangen wird, so kann ich die Ergebnisse verarbeiten. In dem moment, das Popup erscheint und verschwindet schnell, und im hintergrund geht die Suche Los und macht die Anfrage... bekomme ich die Antwort aber erst nach dem Ergebnisse Bildschirm geschoben wurde. Wie kann ich die popup-blockieren, bis wir einen HTTPresponse?
Dank
Phil
InformationsquelleAutor p_mcp | 2011-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verwenden von URLLoader für dieses, verwenden Sie HTTPService:
InformationsquelleAutor J_A_X
HTTPService - /URLRequest (alle remote-Aufrufe) werden durch den Entwurf asynchroner Anfragen über ein Netzwerk nehmen Sie eine variable Menge an Zeit, so gibt es keine zu sagen, wie lange ein Benutzer würde sitzen müssen, um mit Ihrer Maschine/Prozess/plugin gesperrt, bevor die Anfrage zurückgibt. Was Sie tun sollten stattdessen ist ein pop-up-laden-dialog auf die Zeit, die die Anforderung gemacht ist, dann bewegen Sie Ihren code für die Anzeige der anderen pop-up - (und schließen der laden-dialog) in die Prozedur complete. Im Grunde bewegen sich diese:
alert.cancel();
navigator.pushView(views.PersonSearchResults, +p.getResp());
in der Prozedur complete und stellen Sie p in einem privaten lokalen variable (wenn Sie brauchen, um zu instanziieren Sie es im Voraus oder setzen Sie die Eigenschaften auf).
InformationsquelleAutor shaunhusain