为onclick事件连接PHP变量和双引号内的字符串

时间:2014-06-20 05:51:00

标签: javascript php html

按下按钮会调用需要sn值的函数,但下面的代码会因Chrome调试消息而失败:

  

未捕获的ReferenceError:未定义电话

电话是服务名称之一。

<html>
<head>
<title>someTitle</title>
<script>
function myF(varname) {
    //I'll do here some other task with varname
    console.log(varname);
}
</script>
</head>
<body>

<pre>
<?php
$sn='noname';
//here, the code to connect and select DB
while ($reg=mysql_fetch_array($registers))

{
 echo "Service Name: ".$reg['sname']."<br>";
 $sn = $reg['sname'];

 echo "<button onclick=\"myF($sn)\">Vote</button>";
 echo "<hr>";
}

mysql_close($conexion);
?>
</pre>
</body>
</html>

有可能是一个简单的解决方案吗?我的PHP服务器有PHP5

5 个答案:

答案 0 :(得分:1)

  1. 假设您的变量$ sn是&#34; Stack&#34;。因此$ sn是一个你需要传递这个变量的字符串 作为一个字符串。
  2. 因此将myF($ sn)重写为myF(&#34;&#39;&#34;。$ sn。&#34;&#39;&#34;)。
  3. 当你检查按钮时,你可以看到myF(&#39; Stack&#39;)。
  4. 然后在javascript中你可以避免错误。

答案 1 :(得分:0)

你的连接需要像这样改变,

echo '<button onclick="myF("'.$sn.'")">Vote</button>';

答案 2 :(得分:0)

为什么需要双引号?

echo "<button onclick=\"myF($sn)\">Vote</button>";

请改为:

echo '<button onclick="myF(\''. $sn . '\')">Vote</button>';

或者也许这样做sprintf

echo sprintf("<button onclick=\"myF('%s')\">Vote</button>", $sn);

答案 3 :(得分:0)

这有用吗?

 echo "<button onclick=\"myF('$sn')\">Vote</button>";

我尝试了一个简单的测试用例,没有任何MySQL。你可以找到我在下面使用的代码:

<?php
    $sn='noname';
    $registers = array(array('sname' => 'apple'), array('sname' => 'banana'), array('sname' => 'woodapple')); // Dummy "MySQL" Fetch Array (this might differ from what your 'while' loop receives)
    foreach ($registers as $reg){ // In your case, a 'while' loop works.
     echo "Service Name: ".$reg['sname']."<br>";
     $sn = $reg['sname'];
     echo "<button onclick=\"myF('$sn')\">Vote</button>"; // Added Quotes.
     echo "<hr>";
    }
?>

提示:请不要使用mysql_ *函数!它们已被弃用!

答案 4 :(得分:-1)

我认为当您将PHP变量作为参数传递给调用onclick的按钮的javascript function事件时,您会断言,因为它没有被引用。所以需要引用它。我编辑了您需要编辑代码的代码行。所以试试:

...
......
........
........
echo "<button onclick=\"myF(&quot;$sn&quot;)\">Vote</button>";
.......
......
....