php / javascript / HTML解析器错误,带有空白区域

时间:2016-07-13 12:41:18

标签: javascript php html

我正在尝试从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中的双引号关闭了点击,即点击是触发错误)

3 个答案:

答案 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>