Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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
通过onclick向javascript函数传递带单引号的字符串_Javascript_Php_Escaping - Fatal编程技术网

通过onclick向javascript函数传递带单引号的字符串

通过onclick向javascript函数传递带单引号的字符串,javascript,php,escaping,Javascript,Php,Escaping,我有一个带有onclick属性的按钮,它调用一个名为appr的函数。对于每个按钮,传递到appr的参数是不同的,由PHP生成: return "<button type='button' onclick='appr(".$id.",\"".$qr['name']."\");'>Approve</button>"; 代码运行良好,但带有单引号的字符串除外,它失败了。知道为什么吗?在代码中,单引号表示属性边界: onclick='appr( ^ 因此,随后

我有一个带有onclick属性的按钮,它调用一个名为
appr
的函数。对于每个按钮,传递到appr的参数是不同的,由PHP生成:

return "<button type='button' onclick='appr(".$id.",\"".$qr['name']."\");'>Approve</button>";

代码运行良好,但带有单引号的字符串除外,它失败了。知道为什么吗?

在代码中,单引号表示属性边界:

onclick='appr(
        ^
因此,随后出现的第一个
将完成属性值

您可以通过将
s替换为导致引号的HTML实体来解决此问题,这样生成的HTML就会显示出来

<button type='button' onclick='appr(3,"Dave O&quot;Shea");'>Approve</button>
批准

Test
因为单引号用作属性值周围的分隔符。因此,内部的单引号过早地终止了属性值。尝试用
\'
替换
'
,appr()函数上的值是PHP变量的动态值。事实上,要将这些值与按钮联系起来,如果可能的话,您应该找到一种方法,而不是使用内联处理程序(因为他们有逃逸的问题,就像你遇到的,因为他们需要全球污染,因为他们有非常奇怪的行为,因为他们只是一般的坏习惯)。最好在PHP中创建一个对象数组,并将该数组发送到客户端,或者使用数据属性,或者使用内联处理程序以外的任何其他方法。谢谢,我使用了您的建议,改为使用数据属性。我提出了
返回“批准”;
现在可以使用了。干杯!
onclick='appr(
        ^
<button type='button' onclick='appr(3,"Dave O&quot;Shea");'>Approve</button>