如何将URLVariables结果分配给一个字符串变量?

问题描述:

在下面的例子中(是的,我在我的时间线上进行编码,而我试图解决这个问题 - 我知道,我知道)我在HTML页面中加载SWF,然后指示SWF从当前网址。查询参数将包含要播放的视频的来源。如何将URLVariables结果分配给一个字符串变量?

这看起来很直截了当,但我不能让myURL = urlVars.videoloc;工作。更具体地说,urlVars.videoloc似乎是undefined而不是从URL中保存查询参数。所有其他变量都是正确的;定义了wholeURLurlVars

//Initialize Global Event Listener 
player.addEventListener(Event.ADDED_TO_STAGE, getPlay, false, 0, true); 

//Function to play the video 
function getPlay(e:Event):void { 
    var wholeURL:String = ExternalInterface.call("window.location.search.toString"); 
    var urlVars:URLVariables = new URLVariables(wholeURL); 
    var myURL:String = urlVars.videoloc; //<--- Trouble, returning 'undefined' 
    errorBox.text = "videoloc="+urlVars.videoloc+"\nwholeURL="+wholeURL+"\nurlVars="+urlVars+"\nmyURL="+myURL; //<--- The reason I know it is returning 'undefined' 

    if (myURL) { 
     player.load(myURL); 
     player.play(); 
    } 
} 

理想情况下,您应该使用调试器来检查您的URLVariables对象的构成。

如果你无法做到的事情简单的方法,你可以这样做追溯其内容:

for (var parameter:String in urlVars) { 
    trace(parameter + "=" + urlVars[parameter]); 
} 

正如你所看到的,你可以通过内部使用for in循环urlVars每个参数步骤。

我猜videoLoc是你的第一个参数吗?看看我的这个测试的结果:

var address:String = "http://www.google.ca/search?q=test&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a"; 
var urlVars:URLVariables = new URLVariables(address); 

for (var parameter:String in urlVars) { 
    trace(parameter + "=" + urlVars[parameter]); 
} 

的这个输出是:

aq=t 
rls=org.mozilla:en-GB:official 
client=firefox-a 
http://www.google.ca/search?q=test 
ie=utf-8 
oe=utf-8

见发生了什么事q参数?为了解决这个问题,只使用文本过去?

var address:String = "http://www.google.ca/search?q=test&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a"; 
var urlVars:URLVariables 
    = new URLVariables(address.substr(address.indexOf('?')+1)); 

for (var parameter:String in urlVars) { 
    trace(parameter + "=" + urlVars[parameter]); 
} 
+0

谢谢你煮下来在这样一个容易掌握的方式。 我以为我使用URLVariables是不正确的 - 我想在某种程度上它是。在问号之后提取子字符串的技巧。 备注 - 使用调试器,但获得有用的输出没有太大的运气。需要努力。 – Structure 2010-09-01 08:57:20