0

可能大家都知道 GoogleChrome 和 Safari 使用 navigatetoURL 的问题。它仅适用于 IE。因此,我从论坛收集了以下代码。该代码是 html 文件中的一个 javascript 函数。然后Flex中还有另一个函数,当点击按钮时调用。部分代码在这里:

variables.pmsg1 = xml_langue.msg1;
variables.pmsg2 = xml_langue.msg2;
variables.pmsg3 = xml_langue.msg3;
variables.pmsg4 = xml_langue.msg4;
variables.ppaytomode = parentApp.PAYTOMODE;
var request:URLRequest = new URLRequest(dir_web);
request.data = variables;
request.method = "GET";
//navigateToURL(request,"_blank");
postXMLPageRequest(variables, request.toString(), '_blank'); // HERE I AM CALLING THE FLEX FUNCTION

下面的 FLEX 函数:

公共函数 postXMLPageRequest(data:Object, pageURL:String, window:String=null):void { if (ExternalInterface && ExternalInterface.available) ExternalInterface.call("postXMLPageRequest", pageURL, data.encode().toString(), window ); }

JAVASCRIPT 函数(在 html 文件中找到)如下:

函数 postXMLPageRequest(url, xmlString, 目标, 方法) { 方法 = 方法 || “邮政”; 目标 = 目标 || “_空白的”;

<%------------------------------------------------ ----------%> <%-- 创建具有指定属性的表单元素。--%> <%-------------------------------------------- --------------%> var form = document.createElement("form"); form.setAttribute("action", url); form.setAttribute("方法", 方法); form.setAttribute("目标", 目标); form.setAttribute("ENCTYPE", "text/plain"); form.setAttribute("style", "display: none");

<%------------------------------------------------ --------------------%> <%-- 将 XML 字符串作为值添加到表单的隐藏输入中。--%> <%-------------------------------------------- ------------------------%> var hiddenField = document.createElement("input"); hiddenField.setAttribute("类型", "隐藏"); hiddenField.setAttribute("name", "' + xmlString); form.appendChild(hiddenField);

<%------------------------------------------------------%> <%-- 添加表单到正文,提交 --%> <%-- 然后从正文中删除表单。--%> <%--------------------------------------------%> 文件.body.appendChild(form); form.submit(); document.body.removeChild(form); }

但是,当我单击调用 postXMLPageRequest 函数的按钮时没有执行任何操作> 有人可以帮我吗?

非常感谢。

4

1 回答 1

0

我马上看到了 3 个问题。首先,您正在使用 flex 函数调用

postXMLPageRequest(变量, request.toString() , '_blank');

尽管它扩展了 Object,但 URLRequest 实际上并没有 toString() 方法。request.url 是获取 url 字符串的正确方法。

第二个是您的 javascript 中有语法错误。你有一个双引号和一个单引号,而不是一对引号

hiddenField.setAttribute("name", "' + xmlString);

第三,您在对 flex 方法的调用中表明您想要执行 GET 请求。但是,您实际上从未将方法类型字符串传递给 javascript。如果您想要获取,您需要将“GET”作为 ExternalInterface 调用的第四个参数传递。否则它将默认为 POST。

希望有帮助。

于 2013-09-25T15:35:57.630 回答