我正在尝试从php获取数据到我的javascript中。我正在使用原始的XMLHttpRequest。
它运行正常但是当我尝试返回包含<a>
事件的onclick
链接时,我遇到了解析器错误。例如:
在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;
}
}
但谷歌Chrome控制台在元素“some_id
的HTML中显示了这一点 <a href="#" onclick="myfunction('John" Doe')>John Doe</a>
而不是'John Doe'
我们'John" Doe'
。 我认为名称之间的空格负责此事(即没有空格,结果将是'John Doe'
我该如何纠正? (因为javascript中的双引号关闭了点击,即点击是触发错误)
答案 0 :(得分:0)
好吧,让我们看一下呈现的内容:
<a onclick=myfunction('John Doe')>
属性onclick
的HTML解析器的值为myfunction('John
,然后是第二个属性Doe')
。
您还需要确保有效的HTML语法:
<a onclick="myfunction('John Doe')">
^ ^
实际上,您需要确保有效的Javascript语法,然后确保Javascript代码不会破坏HTML语法:
printf('<a onclick="%s">', htmlspecialchars(sprintf('myfunction(%s)', json_encode($data))));
答案 1 :(得分:-1)
尝试:json_encode()
echo "<a href='#' onclick=myfunction('".json_encode($data)."')>$data</a><br>";
答案 2 :(得分:-1)
啊,是的。那么这可能是对的
echo "<a href='#' onclick=\"myfunction('".urlencode($data)."')\" >$data</a>