ajax 传递参数是一个url

xmlhttprequest.open("GET", "/addBI.do?lj="+lj+" 其中我的lj的参数值是一个 URL,很长的而且含有"&"这样的参数。。比如?b_action=xts.run&m=portal/report-viewer.xts&ui.action=run&ui.object=CAMID(%22%3a%3aAnonymous%22)%2ffolder%5b%40name%3d%27%e6%88%91%e7%9a%84%e6%96%87%e4%bb%b6%e5%a4%b9%27%5d%2ffolder%
这样的  在JAVA action里面接收的时候 为什么接收不到"&" 而且把"&"以后的字符全部截取了,改怎么解决这样的问题啊 希望大家帮帮我 !

 


问题补充:
不行啊 因为lj是一个值 二不是你想的那样 可以固定的比如这种?b_action=xts.run&m=portal/report类型的URL。。如果进行escape只能这样escape(lj);结果是不行的 哎 半天没弄出来 谁知道的 帮帮我啊 谢谢啦
问题补充:
是你说的那个意思String  str = request.getParameter("lj");
哦 刚在开会 但是这个获取的str不正确,因为request.getParameter("lj")这里面的lj是一个很长字符串包括%,& 等乱七八糟的字符

url传递字符串的大小只要不超过1M就可以吧,
lj在长也是个字符串啊,只要不包括 +、-、*、/、@符号 经过escape()方法转换后,都可以正确获取,如果包含(+、-、*、/、@)就用他们的16进制替换下就可以了,我测试的是可以正确获取,真不知道你怎么测试的

把你的数据放到form中,然后post请求不就可以了吗???

在传递之前 用escape()转换一次就可以了,具体如下:
var lj = escape(xts.run&m=portal/report-viewer.xts&ui.action=run&ui.object=CAMID(%22%3a%3aAnonymous%22)%)
在不明白的话 查看下js帮助文档中的 escape() 方法

你说的我都有点不不太明白了,不就是拼一个url ,lj是url 中的一个参数???

var param = escape("?b_action=xts.run&m=portal/report-viewer.xts&ui.action=run&ui.object=CAMID(%22%3a%3aAnonymous%22)%2ffolder%5b%40name%3d%27%e6%88%91%e7%9a%84%e6%96%87%e4%bb%b6%e5%a4%b9%27%5d%2ffolder%");

var url = ""/addBI.do?lj="+ param

在action 中获取 String str = request.getParameter("lg");
是这个意思吗 ?

刚刚action获取写错了应该是 String str = request.getParameter([color=red]"lj"[/color]);