我将展示代码的主要部分,因为其中大部分是不相关的:
$url = $row['url'];
echo "<div id='anything'><img id='$url' src='$cover' alt='$title' onclick='myFunction($url)'>";
和 JavaScript 函数:
function myFunction(something) {
alert (something);
}
我在 firebug 中收到以下错误:
missing ) after argument list
[Break On This Error]
myFunction(http://anything.com/anything...
-------------------^
我对 javascript 比较陌生,但我可以看出它显然不允许 url 中的“:”。但是,我无法更改或更改 id,因为我需要提醒图像的确切 id。
我已经在没有 php 的情况下以不同的格式完成了这项工作,所以我认为问题出在哪里?
最佳答案
URL 必须是字符串,但您只是输出字符串的内容。
您可以按照其他地方的建议将其引起来,但这充其量只是一个不完整的解决方案。
幸运的是,PHP 给了你一个更好的答案:json_encode
与 htmlspecialchars
结合(在你的情况下) 。这个函数(除其他外)将为您正确包装字符串,以便您可以在 JavaScript 代码中使用它。所以:
$escapedUrl = htmlspecialchars(json_encode($url));
然后
...onclick='myFunction($escapedUrl)'...
json_encode
用于将文本编码为 JSON,但由于 JSON 是 JavaScript 文字表示法的子集,并且 json_encode
非常高兴地返回一个有效的、正确转义的 JavaScript 字符串。 ..
您还需要 htmlspecialchars
,因为您随后会将生成的 JavaScript 代码输出到 onclick
属性中,以及 HTML 中所有 HTML 属性的内容文本(即使是其中包含代码的文本)必须正确编码,因此(例如)&
必须是 &
等。
关于php - 参数列表后缺少 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13331367/