Как назначить результат URLVariables для строковой переменной? - PullRequest
1 голос
/ 01 сентября 2010

В следующем примере (да, я кодирую свою временную шкалу, пока пытаюсь разобраться с этим - я знаю, я знаю) Я загружаю SWF-файл на HTML-странице, а затем указываю 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 Ответ

3 голосов
/ 01 сентября 2010

В идеале вы должны использовать отладчик для проверки состава вашего URLVariables объекта.

Если вы не можете сделать что-либо простым способом, вы можете сделать это, чтобы отследить его содержимое:

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

Как видите, вы можете пройтись по каждому параметру внутри urlVars, используя цикл 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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...