将值从PHP传递到Javascript变量

将值从PHP传递到Javascript变量,php,javascript,jquery,Php,Javascript,Jquery,我看到过很多关于如何做到这一点的帖子,要么说在php中使用rawurlencode,在javascript中使用decodeURIComponent,要么就是使用json\u encode。两个都不适合我。希望有人能看到我做错了什么: 我有一个html按钮,如下所示: <button id="editbutton" onClick='edit(this, "<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>", "<?

我看到过很多关于如何做到这一点的帖子,要么说在php中使用
rawurlencode
,在javascript中使用
decodeURIComponent
,要么就是使用
json\u encode
。两个都不适合我。希望有人能看到我做错了什么:

我有一个html按钮,如下所示:

<button id="editbutton" onClick='edit(this, "<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>", "<?php echo $result_cameras[$i]["camera_type"]; ?>", "<?php echo rawurlencode($result_cameras[$i]["camera_name"]); ?>")'>Edit</button>
不要在javascript代码中添加任何内容,我得到以下错误:

缺失)在参数列表之后

编辑(此“/dashboard”、“WEBCAM”、“a”a”、“0”、“3DD10C49784E2207DE1E1932958FB…”
其中它指向“a”a


有什么建议吗?

您实际上是在输出javascript字符串文字,因此使用
htmlentities
不是正确的做法。您需要的是:


编辑:不用说,您还需要对正在回音的其他两个字符串执行此操作

这是正确的原因是,如果忽略
addslashes
也转义“null”,则的转义序列与
addslashes
的转义序列兼容“字符。但是,该字符不可能成为URL的一部分,因此,
addslashes
的功能与Javascript对其字符串文本的期望完全匹配


为了完整起见,我应该提到,
htmlentities
的适当用法是处理作为HTML内容的一部分发送的文本;即使如此,(它执行
htmlentities
工作的一小部分)几乎总是更合适。

您实际上是在输出javascript字符串文字,因此使用
htmlentities
不是正确的做法。您需要的是:


编辑:不用说,您还需要对正在回音的其他两个字符串执行此操作

这是正确的原因是,如果忽略
addslashes
也转义“null”,则的转义序列与
addslashes
的转义序列兼容但是,该字符不可能成为URL的一部分,因此
addslashes
的功能与Javascript对其字符串文本的期望完全匹配

为了完整起见,我应该提到,
htmlentities
的适当用法是处理作为HTML内容一部分发送的文本;即使如此,(执行
htmlentities
工作的一小部分)几乎总是更合适的。

  • rawurlencode()用于将字符串转换为URL参数

  • htmlentities()用于将字符串转换为HTML内容

如果要将字符串转换为Javascript字符串,则应为:

function f_str_2js($x) {
  return str_replace( array("\n","\r","\t","'",'"') , array('\n','\r','\t',"\\'",'\"') , $x)
}
  • rawurlencode()用于将字符串转换为URL参数

  • htmlentities()用于将字符串转换为HTML内容

如果要将字符串转换为Javascript字符串,则应为:

function f_str_2js($x) {
  return str_replace( array("\n","\r","\t","'",'"') , array('\n','\r','\t',"\\'",'\"') , $x)
}

上述答案是正确的,但是您应该考虑将数据添加到PHP数组或对象中,而不是JSONEnCODE,并通过使用jQuery on(E/P>)将其添加到日期属性<代码>日期相机=“{……/代码>”,而不做事件绑定。 通过这种方式,您可以通过

$(This).data('camera')
访问数据。无需向onclick函数添加越来越多的参数,即可轻松扩展应用程序

有关更多信息,请参阅:
http://api.jquery.com/on/<以上的答案是正确的,但是您应该考虑将数据添加到PHP数组或对象中,而不是JSONEnCODE,并通过使用jQuery on(E/P>)将其添加到日期属性<代码>日期相机=“{……/代码>”,而不做事件绑定。 通过这种方式,您可以通过
$(This).data('camera')
访问数据。无需向onclick函数添加越来越多的参数,即可轻松扩展应用程序

有关更多信息,请参阅:
http://api.jquery.com/on/

我应用了这个,它给出了与我使用json_encode时的描述相同的错误?@Tom:您是否将所有三个匹配项都更改为
addslashes
?我应用了这个,它给出了与我使用json_encode时的描述相同的错误?@Tom:您是否将所有三个匹配项都更改为
addslashes
<?php echo addslashes($_SERVER['REQUEST_URI']); ?>
function f_str_2js($x) {
  return str_replace( array("\n","\r","\t","'",'"') , array('\n','\r','\t',"\\'",'\"') , $x)
}