问题描述
我有一堆Flex页面,我需要转换这些页面以摆脱Flash Player,并且无法看到仅使用javascript复制此代码的方法。
Flex代码收集数据并将其通过POST发送到另一个框架(名为FrameData)中的Cold Fusion页面。 Cold Fusion从FORM变量(FORM.mydata1,FORM.mydata2等)访问数据。
var RequestSite:URLRequest;
OutputPageValues.OutputType = 5;
OutputPageValues.mydata1 = "2";
OutputPageValues.mydata2 = "test";
RequestSite = new URLRequest("pageurl.cfm"));
RequestSite.data = OutputPageValues;
RequestSite.method = URLRequestMethod.POST;
navigateToURL(RequestSite,'FrameData');
如何在Royale中模拟此构造?还有另一种方法吗?
解决方法
URLRequest
的等效代码:
var u:URLRequest = new URLRequest("http://domain.foo");
navigateToURL(u,"_blank");
在Apache Royale中是BrowserWindow
:
import org.apache.royale.core.BrowserWindow;
var u:String = "http://domain.foo";
BrowserWindow.open(u,"_blank");
要传递变量,您需要通过GET
方法:"http://domain.foo?variable=" + key
。
要使用POST
方法,请改用HTTPService
SWC中的Network
类:
import org.apache.royale.net.HTTPConstants;
import org.apache.royale.net.HTTPService;
import org.apache.royale.net.URLVariables;
// add the variables to send
var urlVars:URLVariables = new URLVariables();
urlVars.set("variable",key);
// create the httpservice instance
var service:HTTPService = new HTTPService();
service.url = "http://domain.foo";
service.method = HTTPConstants.POST;
service.addEventListener("complete",resultCallback);
service.addEventListener("ioError",faultCallback);
// add the variables
service.contentData = urlVars;
// trigger the service
service.send();
如果需要处理CORS,可以选择将CORSCredentialsBead
珠添加到HTTPService
中:
service.addBead(new CORSCredentialsBead(true));
(注意:代码未经测试,请报告是否还可以,以便我们改善此响应和代码段,谢谢)