Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在onclick事件的双引号中包含PHP变量和字符串_Javascript_Php_Html - Fatal编程技术网

Javascript 在onclick事件的双引号中包含PHP变量和字符串

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

按下按钮调用需要sn值的函数,但以下代码失败,并显示Chrome调试消息:

未捕获引用错误:未定义电话

电话是服务名称之一

<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>";
    }
?>