如何在JavaScript中逃避单引号或双引号?

时间:2015-04-29 11:48:50

标签: javascript escaping

我正在尝试用\“#39;替换引号(')以逃避字符串

中的转义引用或双引号
<ul id="list">

</ul>
<button id="sethrefbtn" onclick="setlink();">Set Link</button>

function setlink(){    
    var data = {  
        playerID : 102458,
        playername: "Real Madrid's cristiano Ronalado"
    }  
listring= "<li><a href='SearchServlet?q=" + data.playername.replace(/'/g, "\'"); + "&playerid=" + data.playerID + "&page=1#pg0'>"+ data.playername +"</a></li>";      

 $("#list").append(listring);

}

这是小提琴:fiddle

所需的输出应为:

<a href="SearchServlet?q=Real Madrid's cristiano ronalado&playerid=102458&page=1#pg0">Real Madrid's cristiano Ronalado</a>

2 个答案:

答案 0 :(得分:3)

您的问题是由于它属于HTML属性(因此您需要将其转换为HTML字符引用而不是将其转义)。您应该使用DOM而不是字符串mashing来构建HTML。

但是,在这种特殊情况下,您将它放在一个URL中,因此您应首先将其转义为URL。

您可以使用encodeURIComponent执行此操作,但由于您正在构建整个查询字符串并且正在使用jQuery,因此您可以使用param

&#13;
&#13;
function setlink() {
  var data = {
    playerid: 102458,
    q: "Real Madrid's cristiano Ronalado",
    page: 1
  }

  var url = "SearchServlet?" + $.param(data);

  var li = $("<li />").append(
    $("<a />").text(data.q).attr('href', url)
  );

  $("#list").append(li);

}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="list">

</ul>
<button id="sethrefbtn" onclick="setlink();">Set Link</button>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

listring= "<li><a href='SearchServlet?q=" + data.playername.replace(/'/g, "\'") + "&playerid=" + data.playerID + "&page=1#pg0'>"+ data.playername +"</a></li>";

只需在代码中替换上述语句即可。 代码中的语句中间有一个分号。