Javascript 在onclick事件的双引号中包含PHP变量和字符串
按下按钮调用需要sn值的函数,但以下代码失败,并显示Chrome调试消息: 未捕获引用错误:未定义电话 电话是服务名称之一Javascript 在onclick事件的双引号中包含PHP变量和字符串,javascript,php,html,Javascript,Php,Html,按下按钮调用需要sn值的函数,但以下代码失败,并显示Chrome调试消息: 未捕获引用错误:未定义电话 电话是服务名称之一 <html> <head> <title>someTitle</title> <script> function myF(varname) { //I'll do here some other task with varname console.log(varname); } </scrip
<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
假设变量$sn是堆栈。因此,$sn是传递此变量所需的字符串
一串。
因此,将myF$sn重写为myF'.$sn'。
当你检查按钮时,你可以看到myF'Stack'。
然后在javascript中可以避免错误。
我认为,当您将PHP变量作为参数传递给调用javascript函数的按钮的onclick事件时,字符串会中断,因为它没有被引用。所以它需要被引用。我已经编辑了需要编辑代码的代码行。所以,试试看:
echo '<button onclick="myF("'.$sn.'")">Vote</button>';
您的连接需要这样更改
echo "<button onclick=\"myF($sn)\">Vote</button>";
为什么需要双引号
echo '<button onclick="myF(\''. $sn . '\')">Vote</button>';
这行吗
<?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。您可以在下面找到我使用的代码:
提示:请不要使用mysql_*函数!他们不赞成 检查是否在浏览器中正确生成按钮元素?比如VoteYou确定echo中设置了$sn?@Ranjith aha,您的建议有效,所以问题是如何转换字符串中$sn的值?@Darren echo$ng显示correctly@JoeCoolman:检查我的答案。Chrome调试中没有错误,但按下按钮时没有显示任何内容,同时检查控制台中显示的功能。logvarname;$sn中有什么?给我输出!$sn包含来自DB的文本值,我已经通过echo$sn检查了这一点,但是显然您的echo没有调用该函数,所以按下按钮时不会显示任何内容。意外标记ILLEGAL@JoeCoolman当它在浏览器中渲染时是什么样子的?cosonle show$sn,检查调试程序它显示了什么该死的人,它工作了!,你能给我推荐一本好书或一个链接来学习这件事吗?通常我在javascript和php中的字符串连接方面有困难,特别是当需要在字符串中包含字符串和变量时,就像在这种情况下一样,谢谢你,无论如何我会将你的答案标记为正确。@JoeCoolman“…你能给我推荐一本好书或链接来了解这件事吗…”不,我是从这样的经验和地方学到的。做事,打破现状,从错误中吸取教训。这是学习这些东西的方法。对不起,意外令牌非法意外令牌非法当按下我的朋友,当按下按钮时,显示此消息*未捕获语法错误:意外令牌}*
echo sprintf("<button onclick=\"myF('%s')\">Vote</button>", $sn);
echo "<button onclick=\"myF('$sn')\">Vote</button>";
<?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>";
}
?>