URL参数中的单引号不会被替换和编码

时间:2019-04-10 10:29:22

标签: javascript jsp jstl el urlencode

在我的代码中,我试图获取在Spring控制器中使用modelAttribute设置的值,然后将其传递给Javascript函数,并将该值设置为URL中的参数。

控制器的

modelAttribute:

model.addAttribute(“ appName”,appName); model.addAttribute(“ cloverAppType”,cloverAppType);

视图中的javascript:

 <a data-toggle="tab" onclick="loadOrders()">Orders</a>

  function loadOrders() {
    var message = "${appName}".replace(/'/g, "%27");
    var x = encodeURIComponent(message);
    window.location = '/admin/business/${businessId}/order?cloverAppType=${cloverAppType}&appName='+x;
   }

问题是当appName中包含'时,它会破坏JavaScript并给出Uncaught SyntaxError: Unexpected identifier 和浏览器控制台上的Uncaught ReferenceError: loadOrders is not defined at HTMLAnchorElement.onclick错误。

但是,如果我对值Poppo's Taqueria - Outpost进行硬编码,它将被替换和编码。

如何避免这种情况,并将带有'字符的appName值作为URL的参数传递?

1 个答案:

答案 0 :(得分:0)

更改

var message = "${appName}".replace(/'/g, "%27");

var message = `${appName}`.replace(/'/g, "%27");