关于ajax返回值中的el表达式怎么解析

keithcai 2015-09-06 04:11:04
最近在做一个快捷按钮配置表,在主页预留了一排按钮,可以通过配置表配置这排按钮的属性。
我的做法是用ajax获得按钮的属性然后加到div中,大概是这样
			var jsonObj = eval("(" + data + ")");
var button = document.createElement("input");
button.setAttribute("type", "button");
button.setAttribute("value", jsonObj.Name);

button.onclick = function(){
window.open(jsonObj.Url);
};
var barDiv = document.getElementById("barDiv");
barDiv.insertBefore(button, barDiv.childNodes[0]);

那么问题来了,jsonobj.Url是带参数的,参数用的是el表达
例如/xxx/xxx.do?id={$param.id}
其中{$param.id}无法解析,原因我也知道,el表达式解析在服务端完成,此处不会再解析。
请问有什么办法二次解析或者不用el表达式实现我的需求?
...全文
530 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
keithcai 2015-09-07
  • 打赏
  • 举报
回复
就是没有捏,太多了,jsp还要绑实例,太闹心~
Go 旅城通票 2015-09-07
  • 打赏
  • 举报
回复
引用 9 楼 keithcai 的回复:
针对具体固定的el表达式,js替换这种方法我试过,也成功了,但是由于不知道配置表会用到哪些el表达式,所以这个方法不实用呀,难道我要把主页所有属性都获取一遍?
前提你有所有el的数据没有,没有当然就没办法搞了,如果有你可以用这则提取出所有的el表达式进行内容替换
        //所有可能出现的el表达式数据全部放入elData参数中
        var elData = {'$param.id':11111,'$param.name':'name test','$param.qq':'qq data',email:'email data'}
        var s = 'xxxx?id={$param.id}&name={$param.name}&qq={$param.qq}&qq={$param.notex}'
        s=s.replace(/\{([^\}]+)\}/g, function ($0, $1) {
            return elData[$1]||'elData中为包含指定el表达式数据'
        })
        alert(s)
keithcai 2015-09-07
  • 打赏
  • 举报
回复
主页快捷按钮调用动态页面,这个需求貌似很常见呀~有没有人曾经做过的?给我讲讲思路也好~
keithcai 2015-09-07
  • 打赏
  • 举报
回复
针对具体固定的el表达式,js替换这种方法我试过,也成功了,但是由于不知道配置表会用到哪些el表达式,所以这个方法不实用呀,难道我要把主页所有属性都获取一遍?
Go 旅城通票 2015-09-07
  • 打赏
  • 举报
回复
引用 7 楼 keithcai 的回复:
[quote=引用 6 楼 showbo 的回复:] 你的 {$param.id} 从哪来的?onclick事件中获取到 {$param.id} 的值附加到window.open的url参数里面就好了
param.id是主页的网站参数,从服务器端获取比较困难 而且因为是按钮配置表,不一定是{$param.id} ,其他按钮有可能是{$param.name}或者{$abc} 都有可能,最好的方法是可以二次解析el表达式~~不知道可不可以[/quote] 你服务器端直接返回el最终结果不行?你返回{$param.id}这种数据客户端是不会解析的。要么这些内容你要先输出到页面,如script内的js变量存储起来,然后js执行替换
keithcai 2015-09-07
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:
你的 {$param.id} 从哪来的?onclick事件中获取到 {$param.id} 的值附加到window.open的url参数里面就好了
param.id是主页的网站参数,从服务器端获取比较困难 而且因为是按钮配置表,不一定是{$param.id} ,其他按钮有可能是{$param.name}或者{$abc} 都有可能,最好的方法是可以二次解析el表达式~~不知道可不可以
Go 旅城通票 2015-09-06
  • 打赏
  • 举报
回复
你的 {$param.id} 从哪来的?onclick事件中获取到 {$param.id} 的值附加到window.open的url参数里面就好了
hch126163 2015-09-06
  • 打赏
  • 举报
回复
服务器 端替换 {$param.id}
keithcai 2015-09-06
  • 打赏
  • 举报
回复
引用 3 楼 hxtgirq710 的回复:
针对于这一次请求用户id肯定是固定的啊!
这个按钮是给所有用户用的,不同用户打开的页面内容不一样! 如果不用ajax 直接写在jsp里按钮链接就是/xxx/xxx.do?id={$param.id} 但是我现在要实现在配置表里配置链接
冰糖-雪梨 2015-09-06
  • 打赏
  • 举报
回复
针对于这一次请求用户id肯定是固定的啊!
keithcai 2015-09-06
  • 打赏
  • 举报
回复
引用 1 楼 DaveLeeCN 的回复:
为什么不把el表达式的值也写到jsonobj里面,作为一个属性?
因为el表达式的值是变化的呀,比如根据登录的用户id改变,又不是固定值怎么传?
DaveLeeCN 2015-09-06
  • 打赏
  • 举报
回复
为什么不把el表达式的值也写到jsonobj里面,作为一个属性?

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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