0

我有一堆 Flex 页面需要转换以摆脱 Flash 播放器,并且无法看到如何仅使用 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 中模拟此构造?还有另一种方法可以做到这一点吗?

4

1 回答 1

1

等效代码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.

要改用SWC中的POST方法使用HTTPService类: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));

(注意:代码未经测试,如果一切正常,请报告,以便我们改进此响应和代码片段,谢谢)

于 2020-08-24T10:04:14.987 回答