在线急等求助:获取地址栏传过来的参数

jdjwxj 2010-07-05 10:41:14
我有这么一个方法
private function iniApp() : void
{
{
sourcewareid = this.parameters.id;
Alert.show("sourcewareid="+sourcewareid);
}
我希望测试的时候,从地址栏传一个id值,例如:
file://C:\Documents and Settings\Administrator\My Documents\Flex Builder 3\tt\bin-debug\tt.html?id=1
现在我想通过方法或属性之类的获取这个id的值,但是一直获取不到,请大家帮帮忙,谢谢了。
...全文
282 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdjwxj 2010-07-05
  • 打赏
  • 举报
回复
另外还要问一下,我生成的这个页面地址是这样的,
file://C:\Documents and Settings\Administrator\My Documents\Flex Builder 3\tt\bin-debug\tt.html
我自己在在后面加上“?id=1”,之后再刷新,可以这样去测试么?
jdjwxj 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiewneqi 的回复:]
http://www.blogjava.net/vip01/archive/2008/01/07/173262.html
参考一下
[/Quote]
这里介绍的方法和我用的是一样的,this.parameters.id
但是获取的id是null,不知道为什么,我想用js的方式先获取,然后再用flex调用js的方法,截取字符串的方式,但是还是不能实现,为什么这里获取的会是null呢?谢谢
jdjwxj 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wowflex 的回复:]
获取问号后面的值有时候是拿不到,我以前是用 # + 传过来的值,然后用正则.
[/Quote]
可以说的详细一点么?谢谢了
wowflex 2010-07-05
  • 打赏
  • 举报
回复
获取问号后面的值有时候是拿不到,我以前是用 # + 传过来的值,然后用正则.
xiewneqi 2010-07-05
  • 打赏
  • 举报
回复
http://www.blogjava.net/vip01/archive/2008/01/07/173262.html
参考一下
jdjwxj 2010-07-05
  • 打赏
  • 举报
回复
谢谢大家,我去结贴,我是这么做的
private var params:Object;
private function getParams():Object {
params = {};
var query:String = ExternalInterface.call("window.location.search.substring", 1);
//Alert.show(query);
if(query) {
var pairs:Array = query.split("&");
// var p1:String = pairs[0];
// var p2:String = pairs[1];
// Alert.show(p1+"----"+p2);
// var pos2:int = pairs[i].indexOf("=");
// Alert.show(String(pos2));


for(var i:uint=0; i < pairs.length; i++) {
var pos:int = pairs[i].indexOf("=");
//Alert.show(String(pos));
if(pos != -1) {
var argname:String = pairs[i].substring(0, pos);

var value:String = pairs[i].substring(pos+1);
//Alert.show("argname:"+argname+"----value:"+value);
params[argname] = value;
}
}
}

return params;
}
加了这么一个方法在前台,然后
var args:Object = getParams();
sourcewareid = args.courseid;
coursewareno = args.coursewareNo
34
获取到就可以了,如果参数更多的话,只要把34的位置继续加就可以了。非常感谢你们。
水中影子 2010-07-05
  • 打赏
  • 举报
回复
Application.application.url

楼上办法很多
herowach 2010-07-05
  • 打赏
  • 举报
回复
很多方法都可以取url里的参数啊,我觉得最简单的就是通过flashvars传(参考flex builder中的Passing request data with flashVars properties一节);用这个传就需要在页面里先获取参数内容,方法有:
1、通过jsp的request.getParameterNames()可以取到所有;
2、如果是纯html,用swfObject.js去加载swf的话,里面直接就有取浏览器参数的方法
swfobject.getQueryParamValue(paramStr);
具体可以参考http://code.google.com/p/swfobject/wiki/api

不用flashvars传的话,也可以通过获取url解析的方法,
Application.application.url
BrowserManager.getInstance().url
应该都可以取到浏览器地址;
也可以用flex builder中的Passing request data with URL fragments一节中的方法,反正方法很多
xiewneqi 2010-07-05
  • 打赏
  • 举报
回复
刚才自己试了一段代码,可以用,你可以参考:
(1)AS代码:
var str:String = ExternalInterface.call("getURL");// 调用外部页面函数
var pos:int = str.indexOf("?");
var paraStr:String = str.substr(pos+1);
try{
var va:URLVariables = new URLVariables(paraStr);
lbTest.text = va.userName; // userName是测试用的参数名称
}catch(e:Error) {
lbTest.text = "没有找到相应的属性";
}

上面的lbTest是我测试用的Label组件
(2)在你嵌入flex生成的swf文件的页面,写一个js函数,返回当前url字符串:
function getURL(){
return window.location.href;
}

还有,你上面提到的刷新测试方法好像不行,你最好把页面放在一个web工程目录下,再去测试,上面的代码假如输入 http://xxx:xxx/xxx?userName=1234,你就会通过va.userName得到1234

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧