是这样的:
$html .= "<table>"
$html .= "<tr onclick=\"test(" . $phpvar . ")\"><td>test</td></tr>";
$html .= "</table>"
$rVal=array("htmltable" => $html);
echo json_encode($rVal);
JS:
success: function(data){
$("#content").html(data.htmltable);
可能?
当没有涉及PHP var时,一切都有效,但是我问是否有办法传递这样的PHP var ...
答案 0 :(得分:2)
它是正确的(无错误运行)... $ phpvar的值是一个人的名字和姓氏的字符串,以及昵称
所以给出:
$phpvar = "John 'the Something' Smith";
$html
的值为:
<table><tr onclick="test(John 'the Something' Smith)"><td>test</td></tr></table>
因此John
将被视为JavaScript变量名称。然后你会遇到语法错误。
您需要将数据编码为JavaScript字符串文字。 json_encode
会做到这一点。
$phpvar = "John 'the Something' Smith";
$javascript_literal = json_encode($phpvar);
$html = "";
$html .= "<table>";
$html .= "<tr onclick=\"test(" . $javascript_literal . ")\"><td>test</td></tr>";
$html .= "</table>";
print $html;
...但是仍然没有成功,因为它会给你:
<table><tr onclick="test("John 'the Something' Smith")"><td>test</td></tr></table>
... "
将终止属性值。
所以你还需要为HTML编码。
$phpvar = "John 'the Something' Smith";
$javascript_literal = json_encode($phpvar);
$html_attribute_value = htmlspecialchars($javascript_literal);
$html = "";
$html .= "<table>";
$html .= "<tr onclick=\"test(" . $html_attribute_value . ")\"><td>test</td></tr>";
$html .= "</table>";
print $html;
会给你:
<table><tr onclick="test("John 'the Something' Smith")"><td>test</td></tr></table>
......这将有效。
但这太可怕了。并引发头痛。所以不要这样做。
这样:
$rVal = array("plaindata" => $phpvar);
header("Content-Type: application/json");
echo json_encode($rVal);
和
success: function(data) {
$("#content")
.empty()
.append(
$("<button />")
.text("test")
.on("click", function() { test(data.plaindata); })
);
}