2 sakura zhj Sakura_ZHJ 于 2015.07.03 14:21 提问

JS中字符串拼接碰到EL表达式

是iframe中的src
我先写了

 function show1(lfmc){
                alert(lfmc);
                var src="";
                src=${ctx}+   "/houseInfoTj_getLfxxDetail.do?xqid="   +${xqid}+  "&xqcj="   +${xqcj}+    "&lfmc="   +lfmc;

                          alert(src);
                $("#showIframe").attr("src",src);
            }


报错,ie说缺少对象,chrome说show1没定义

后来我改了下



            function show1(lfmc){
                alert(lfmc);
                var src="";
                src="${ctx}/houseInfoTj_getLfxxDetail.do?xqid=${xqid}&xqcj=${xqcj}&lfmc="+lfmc;
                alert(src);
                $("#showIframe").attr("src",src);
            }

把EL表达式放到”“中就好了。

提问:JS中的字符串拼接时要用到el表达式有什么规则?

5个回答

lingfeiwen
lingfeiwen   2015.07.03 18:09
已采纳

URL后面跟参数就是使用&,而不是使用"&",比如:xxx?id=1&param=3这样是正确的,xxx?id=1"&param="3是错误的。
EL表达式取值问题:${xqid} 这样取出来,值不带引号,"${xqid}" 得到的是"值",带引号的。URL里面不能带"",带了就是非法的。

Sakura_ZHJ
Sakura_ZHJ 回复菩萨心肠: 原来如此,也就是说,在引号中,EL还是能正常取值的,好神奇。。
2 年多之前 回复
lingfeiwen
lingfeiwen 比如src=${ctx}+"/houseInfoTj_getLfxxDetail.do?xqid="+${xqid}+"&xqcj="+${xqcj}+"&lfmc="+lfmc,运行之后,得到的是src=aaa+"/houseInfoTj_getLfxxDetail.do?xqid="+bbb+"&xqcj="+bbb+"&lfmc="+lfmc,这样会报错,因为aaa\bbb\ccc都是没有定义的,自然会报错说这些变量defined,但是"${ctx}/houseInfoTj_getLfxxDetail.do?xqid=${xqid}&xqcj=${xqcj}&lfmc="+lfmc这样写,运行后得到的是"aaa/houseInfoTj_getLfxxDetail.do?xqid=bbb&xqcj=ccc&lfmc="+lfmc,就是没问题的,在这里aaa\bbb\ccc都当成了字符串,只有lfmc是变量,而lfmc确实是定义了的变量。要说句抱歉,之前想当然了,正确答案应该是需要引号引起来的。jQuery这样取值确实需要引起来以便把它当做字符串,要不然就取出来又当成未定义的变量了。
2 年多之前 回复
lingfeiwen
lingfeiwen 回复Sakura_ZHJ: 做了下实验,${xqcj}这样去获取是aaa,不带引号的,如果这个aaa在引号里面就表示是字符串,如果是在引号外面就表示是js的变量。
2 年多之前 回复
Sakura_ZHJ
Sakura_ZHJ 回复菩萨心肠: 我开始就是这么写的,然后IE报缺少对象,谷歌报 Uncaught ReferenceError: show1 is not defined,但是把EL表达式当做常量放入双引号,就不会报错
2 年多之前 回复
lingfeiwen
lingfeiwen src=${ctx}+"/houseInfoTj_getLfxxDetail.do?xqid="+${xqid}+"&xqcj="+${xqcj}+"&lfmc="+lfmc,这样啊,变量不需要引号引起来
2 年多之前 回复
Sakura_ZHJ
Sakura_ZHJ 回复菩萨心肠: 问题来了,src="${ctx}/houseInfoTj_getLfxxDetail.do?xqid=${xqid}&xqcj=${xqcj}&lfmc="+lfmc,我这么写才能正确的跳转,用拼接的方式报错啊,就是想不通为什么?
2 年多之前 回复
lingfeiwen
lingfeiwen 是应该这么拼。${xqid}是变量,在拼字符串的时候,不要带引号
2 年多之前 回复
lingfeiwen
lingfeiwen “xxx?id=1&name=”+${name}+"&pw="+${pw}是正确的.
2 年多之前 回复
Sakura_ZHJ
Sakura_ZHJ 我用"${xqid}"是想拼接字符串,“xxx?id=1&name=”+${name}+"&pw="+${pw},我这么写出来,URL不是 xxx?id=1&name=xx&pw=xx,这样吗?
2 年多之前 回复
qq_21891815
qq_21891815   2015.07.03 14:25

拼接符是&,传递多个参数也用&隔开

Sakura_ZHJ
Sakura_ZHJ what?拼接符是&?什么意思?我两个字符串的区别就只是一个把el表达式放在双引号外面,一个放在里面而已啊
2 年多之前 回复
yuke198907
yuke198907   2015.07.03 14:31

字符串拼接基本不用一些特殊表达式,很容易报错的

Sakura_ZHJ
Sakura_ZHJ 但是确实要用到时怎么办呢- -
2 年多之前 回复
u011376884
u011376884   2015.07.03 16:37

规则就是要加引号,不加引号取不到值

dongjinwang
dongjinwang   2015.07.28 00:00

拼接符是&,传递多个参数也用&隔开

Csdn user default icon
上传中...
上传图片
插入图片