代码之家  ›  专栏  ›  技术社区  ›  Structure

如何将urlvariables结果赋给字符串变量?

  •  1
  • Structure  · 技术社区  · 16 年前

    在下面的示例中(是的,当我尝试解决这个问题时,我在时间轴上编码——我知道,我知道),我在HTML页面中加载了一个SWF,然后指导SWF从当前URL获取查询参数。查询参数将包含视频播放的源。

    这对我来说似乎很直接,但我不能 myURL = urlVars.videoloc; 工作。更具体地说, urlVars.videoloc 似乎是 undefined 而不是保存来自URL的查询参数。所有其他变量都是正确的;两者都是正确的 wholeURL 和 urlVars 定义。

    //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();
        }
    }
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   Gunslinger47    16 年前

    理想情况下,应该使用调试器检查 URLVariables 对象。

    如果你不能用简单的方法做事情,你可以这样做来跟踪它的内容:

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

    如您所见,可以使用 for in 循环。

    我猜 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]);
    }