将字符串从PHP传递给JavaScript函数

时间:2011-02-26 15:19:58

标签: php javascript string

我正在尝试编写一个代码,以便在单击表时传递PHP字符串:

<?php
    echo("<td onclick = 'print_("$file[$i]->Name");' >". $files[$i]->Name."</td>");  
?>

其中files[]是一个数组,并且每个元素都是一个名为字符串的类,并且它被放在for循环中。 我试图将它传递给JavaScript函数,我需要在那里使用它的名字,它不起作用。我尝试传递i变量并且它被正确传递,所以我认为应该有一个特殊的语法来处理字符串。

function print_(var x)  {
    alert(x);
}

5 个答案:

答案 0 :(得分:1)

你需要在字符串周围加上引号。试试这个:


echo("<td onclick = 'print_(\'".$file[$i]->Name."\');' >". $files[$i]->Name."</td>");

还要确保您的$ file [$ i] - &gt;名称不包含引号

答案 1 :(得分:0)

您可以编写值而不显示它。然后单击时显示它:

echo("<td id='" . $i . "' onclick='javascript:show(" . $i . ")'><p>" . $files[$i]->Name . "</p></td>");

然后将p-tag的可见性设置为hidden,并使用show()函数显示它。如果这不适合你,我建议你用ajax调用:)

答案 2 :(得分:0)

您可以尝试这样的事情:

<?php
...
$scriptCode="";
...(looping) 

echo("<td id='print_td$i' >". $files[$i]->Name."</td>");
$scriptCode .= '$("#print_td'.$i.'").click(function(){
  var id = '.$i.';
  //Do whatever JS you need to here, possibly: print_(id);
});';

... (end loop)

?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
  <?php echo $scriptCode; ?>
});
</script>

这有点广泛,但它将在未来为您提供更大的灵活性。

答案 3 :(得分:0)

除了引用和连接为matei建议之外,您的函数失败,因为function print_(var x)不是有效的JavaScript。您不需要函数声明中的var。只需声明如下:function print_(x)

祝你好运。

答案 4 :(得分:0)

我遇到了同样的问题并找到了答案(即使它没有意义)

你希望这可行......

echo '<td onclick="showPicture("' . $pic . '")><img src="' . $row['imgRef'] . '" height="60"; /></td>';

但事实上,这有效......

echo '<td onclick=showPicture(' . $pic . ')><img src=' . $row['imgRef'] . ' height="60"; /></td>';

你会发现你实际上必须省略你通常希望看到它们的引号。