我正在尝试用\“#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>
答案 0 :(得分:3)
您的问题是由于它属于HTML属性(因此您需要将其转换为HTML字符引用而不是将其转义)。您应该使用DOM而不是字符串mashing来构建HTML。
但是,在这种特殊情况下,您将它放在一个URL中,因此您应首先将其转义为URL。
您可以使用encodeURIComponent
执行此操作,但由于您正在构建整个查询字符串并且正在使用jQuery,因此您可以使用param
。
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;
答案 1 :(得分:1)
listring= "<li><a href='SearchServlet?q=" + data.playername.replace(/'/g, "\'") + "&playerid=" + data.playerID + "&page=1#pg0'>"+ data.playername +"</a></li>";
只需在代码中替换上述语句即可。 代码中的语句中间有一个分号。