我的php文件中有一个变量,每当用户点击我的php页面上的链接时,我想传递给javascript函数。
这里是php简介:
$delete_img=$image_id.'_'.$newfilename;
$display_image.="<td><img src='../temp_images/$newfilename'>";
if ($i==$extra_pic){
$display_image.="<br><a href='#' onclick='window.parent.reset_imageform($i, $delete_img);'>delete picture</a></td>";}
“if($ i == $ extra_pic)为真,所以不要介意......
问题是,如果你点击链接'删除图片',应该调用函数reset_imageform(nr,pic_nr),但每当我尝试将变量$ delete_img传递给函数时它都不会。 一旦我从调用中删除此变量,就像这个'reset_imageform($ i);'然后它工作。但添加该变量将使其无法工作。 函数根本没有被调用!
变量包含一个随机id nr,带有下划线,然后是文件名,例如:23432423439_picture.jpg
我有什么东西在这里丢失了,我应该在$ delete_img做些什么之后再发送它吗?
我的所有文件都是utf-8格式!
由于
PS:如果您需要更多输入,请告诉我......
答案 0 :(得分:5)
因为它是一个字符串,你需要引用它。
正确的方法是这样的:
$display_image.='<br><a href="#" onclick="window.parent.reset_imageform(' . $i . ', '
. htmlspecialchars(json_encode($delete_img))
. ');">delete picture</a></td>';
我已经交换了引号,使其适用于任何字符串;否则,如果你在其他地方使用它,而字符串包含撇号,则无效。交换引号的替代方法是将ENT_QUOTES
传递给htmlspecialchars()
。
你说$i
对它有效,所以我假设$i
是一个整数 - 所以它不需要引用。
答案 1 :(得分:3)
如果您将字符串传递给JavaScript函数,则必须正确引用它:
所以没有php,它看起来像:
<br><a href='#'
onclick='window.parent.reset_imageform(5, "23432423439_picture.jpg");'>
delete picture</a></td>
因此,要获得生成的HTML,您需要包含引号:
$display_image.="<br><a href='#'
onclick='window.parent.reset_imageform({$i}, \"{$delete_img}\");'>
delete picture</a></td>";
我们这里有多个级别的引号,因此23432423439_picture.jpg
周围的双引号需要转义,例如\"
答案 2 :(得分:3)
当遇到Javascript问题时,不要查看生成它的服务器端代码,而是查看最终输出(在webbrowser中右键单击页面并选择“查看源代码”左右)并专注于生成的JS代码。这样你就应该更快地发现JS字符串变量周围缺少的引号。