我在MySQL PHP 上工作
while($row = mysqli_fetch_array($result))
{
echo "<a href=javascript:click('$row[Name]')>".$row['Name']."</a>";
echo "<br><br><br>";
}
但结果是:
<a href="javascript:click('Slow" cooker="" pepper="" steak')="">Slow Cooker Pepper Steak</a>
javascript
clikc(name)
{
alert("test");
}
什么是错误。
您需要引用href
值,并且应该为输出到的介质编码数据,以防数据中包含可能破坏html或javascript的字符。
所以你可以使用这样的东西:
echo "<a href='"javascript:click(" . htmlspecialchars(json_encode($row['Name']))) . ");'">"
. htmlspecialchars($row['Name']) . "</a>";
连接出现问题。试试这个:
echo "<a href=javascript:click('".$row['Name']."')>".$row['Name']."</a>";
并且clikc(name)
必须是click(name)
。
如果你计划像这样使用vars,你应该转义它们
版本1:
echo "<a href='"javascript:click('".addslashes($row['Name'])."');'">".$row['Name']."</a>";
版本2,清洁剂:
$value = addslashes($row['Name']);
echo <<<EOD
<a href="#" onclick="click('{$value}');return false;">{$row['Name']}</a>
EOD;
版本3,干净的js也:
a) php:
$value = addslashes($row['Name']);
echo <<<EOD
<a href="#" class='js-clicky' data-value="{$value}">{$row['Name']}</a>
EOD;
b) html,使用jQuery
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
$('.js-clicky').click(function(){
alert($(this).data('value');
})
</script>
阅读此处关于:
heredoc:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
addslashes:http://php.net/manual/en/function.addslashes.php
jquery:http://jquery.com/