在参数列表后丢失)

iyo*_*p45 0 javascript php

我将展示代码的主要部分,因为大多数代码都是无关紧要的:

    $url = $row['url'];
    echo "<div id='anything'><img id='$url' src='$cover' alt='$title' onclick='myFunction($url)'>"; 
Run Code Online (Sandbox Code Playgroud)

和javascript函数:

 function myFunction(something) { 
 alert (something);
 }
Run Code Online (Sandbox Code Playgroud)

我在firebug中收到以下错误:

missing ) after argument list
[Break On This Error]   
    myFunction(http://anything.com/anything...
-------------------^
Run Code Online (Sandbox Code Playgroud)

我对javascript相对较新,但我可以告诉它显然不允许来自网址的":".但是,我无法更改或更改ID,因为我需要提醒图像的确切ID.

我已经在不使用php的情况下以不同的格式进行了这项工作,所以我认为它存在问题所在?

T.J*_*der 5

URL必须是一个字符串,但您只是输出字符串的内容.

可以像其他地方一样在其周围加上引号,但这至多是一个不完整的解决方案.

幸运的是,PHP为您提供了更好的答案:json_encode组合(在您的情况下)与htmlspecialchars.这是一个函数,除其他外,将为您正确包装一个字符串,以便您可以在JavaScript代码中使用它.所以:

$escapedUrl = htmlspecialchars(json_encode($url));
Run Code Online (Sandbox Code Playgroud)

然后

...onclick='myFunction($escapedUrl)'...
Run Code Online (Sandbox Code Playgroud)

json_encode用于将文本编码为JSON,但由于JSON是JavaScript文字符号的子集,并且json_encode非常高兴地返回有效的,正确转义的JavaScript字符串...

您也需要这样htmlspecialchars,因为您正在将生成的JavaScript代码输出到onclick属性中,并且HTML文本中的所有HTML属性的内容(即使是包含其中代码的HTML属性)也必须正确编码,以便(例如)&必须是&amp;