[英]Inserting a PHP variable in an HTML string being passed to JavaScript function via AJAX?
是这样的:
$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 ...
正确(功能正常,没有错误)... $ 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); })
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.