php - 参数列表后缺少 )

标签 php javascript

我将展示代码的主要部分,因为其中大部分是不相关的:

    $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_encodehtmlspecialchars 结合(在你的情况下) 。这个函数(除其他外)将为您正确包装字符串,以便您可以在 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/

相关文章:

javascript - 基于逗号分隔的数组打开新选项卡

php - 是否可以在准备好的语句中使用 SELECT * ?

php - 可以将 INSERT、UPDATE、DELETE、SELECT 查询放在同一个文件中吗

javascript - 使用映射将数字数组转换为字符串数组

javascript - 使用 jquery 显示时如何将 <a> 标签的名称传递给 <div> 标签?

php - 如何使用 Zend Layout 作为 Wordpress 主题?

php - 将 wiki 格式转换为 XHTML

javascript - 在浏览器历史记录后退按钮上重新加载页面

javascript - React警告错误停止编译应用程序

javascript - 实现一个 Jquery 计数器