[英]php/javascript/HTML parser error with white space
我正在尝试将数据从php获取到我的JavaScript中。 我正在使用原始XMLHttpRequest。 效果很好,但是尝试返回包含带有参数的onclick
事件的<a>
链接时出现解析器错误。 例如 :
在PHP中,我有:
echo "<a href='#' onclick=myfunction('$data')>$data</a><br>";
在JavaScript中我有
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
document.getElementById("some_id").innerHTML=xhr.responseText;
}
}
但是,谷歌浏览器控制台会在元素“ some_id”的HTML中显示此内容
<a href="#" onclick="myfunction('John" Doe')>John Doe</a>
相反,具有'John Doe'
,我们有'John" Doe'
。 我已经想通了名称之间的空白 ,负责本(即不带空格,结果将是'John Doe'
我该如何纠正? (因为javascript中的双引号关闭了点击,即点击会触发错误)
好吧,让我们看一下渲染为:
<a onclick=myfunction('John Doe')>
对于HTML解析器, onclick
属性具有值myfunction('John
,然后是第二个属性Doe')
。
您还需要确保有效的HTML语法 :
<a onclick="myfunction('John Doe')">
^ ^
实际上,您需要确保有效的Javascript语法,然后确保Javascript代码不会破坏HTML语法:
printf('<a onclick="%s">', htmlspecialchars(sprintf('myfunction(%s)', json_encode($data))));
试试:json_encode()
echo "<a href='#' onclick=myfunction('".json_encode($data)."')>$data</a><br>";
是啊。 那可能是对的
echo "<a href='#' onclick=\"myfunction('".urlencode($data)."')\" >$data</a>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.