在Flex 4.5中导航到URL的替代方法 - 无法正常工作

时间:2013-09-24 06:25:45

标签: javascript actionscript-3 flex flex4.5 navigatetourl

也许大家都知道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

以下的灵活功能:

public function postXMLPageRequest(data:Object,pageURL:String,window:String = null):void {     if(ExternalInterface&& ExternalInterface.available)         ExternalInterface.call(“postXMLPageRequest”,pageURL,data.encode()。toString(),window); }

JAVASCRIPT FUNCTION(在html文件中找到)下面:

function postXMLPageRequest(url,xmlString,target,method)   {   method =方法|| “POST”;   target = target || “_blank”;

<%-------------------------------------------- --------------%GT;   <% - 创建具有指定属性的表单元素。 - %GT;   <%----------------------------------------------- -----------%GT;   var form = document.createElement(“form”);   form.setAttribute(“action”,url);   form.setAttribute(“method”,method);   form.setAttribute(“target”,target);   form.setAttribute(“ENCTYPE”,“text / plain”);   form.setAttribute(“style”,“display:none”);

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

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

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

非常感谢。

1 个答案:

答案 0 :(得分:0)

我马上就看到了3个问题。首先,您使用

调用flex函数
  

postXMLPageRequest(变量, request.toString(),'_ blank');

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

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

中的一对引号
  

hiddenField.setAttribute(“name”,“'+ xmlString);

第三,在调用flex方法时指出要执行GET请求。你永远不会实际将方法类型字符串传递给javascript。如果你想要做一个get,你需要传递“GET”作为ExternalInterface调用的第四个参数。否则它将默认为POST。

希望有所帮助。