js参数传递,单引号双引号问题

​​​​​​​随手记

问题背景:

后端传递数据给前端,前端是个button,当点击时,就把数据alert出来。

但是后端的数据时而有单引号,时而有双引号......

无论前端用单引号还是双引号去包裹数据,都有问题。

   return '<button class="btn-danger" data-msg=\'' + (record.data.msg) + '\' onclick="showError(this)">异常终止</button>';


    function showError(msg) {
        msg = msg.getAttribute("data-msg");
        Ext.Msg.alert(
            {
                title: "异常信息",
                message: msg,
                buttons: 1,
                minWidth: 700
            });
    }

解决办法:

查了很多资料,没有什么特别好的办法,只有一个有点麻烦,却很可靠的办法,那就是自己定义字符串替换单引号双引号,参数传递完毕,要展示时再替换回来。

后台:

    public static final String SEPARATOR_0 = "SEPARATOR_0";

    public static final String SEPARATOR_1 = "SEPARATOR_1";  

for (DownloadTask d:list) {
            if (StringUtils.isNotBlank(d.getMsg())){
                String msg = d.getMsg().replaceAll("\r\n","<br>");
                msg = msg.replaceAll("\"",SEPARATOR_0).replaceAll("'",SEPARATOR_1);
                d.setMsg(msg);
            }
        }

前端:


    function showError(msg) {
        msg = msg.getAttribute("data-msg");
        msg = msg.split("SEPARATOR_0").join("\"").split("SEPARATOR_1").join("'");
        Ext.Msg.alert(
            {
                title: "异常信息",
                message: msg,
                buttons: 1,
                minWidth: 700
            });
    }
posted @ 2021-08-31 21:34  q彩虹海q  阅读(972)  评论(0)    收藏  举报