首页 > 解决方案 > PHP echo方法输出的字符串参数不能传递给javascript函数

问题描述

我有一种情况,我必须将 php 变量作为函数中的参数传递,以便稍后在 javaScript 中使用,但字符串参数不起作用,只有整数起作用。

<?php 

$product = apples;

$quantity = 5;

echo '<button onclick = "carryOut('.$quantity.','.$product.')">Click me</button>';

?>

<script>
function carryOut(q,p){
alert(q);
alert(p);
}
</script> 

当我把它写成

onclick = "carryOut('.$quantity.',\'apples\')"

它的工作,但这不是我想要做的。

标签: javascriptphphtmlfunctionarguments

解决方案


您的原始代码将(假设$product = apples;应该是$product = "apples";为了避免 PHP 语法错误)输出:

<button onclick = "carryOut(5,apples)">Click me</button>

这将导致 JS 错误,因为apples它是字符串文字,因此需要在引号内。

所以你只需要在你期望的值周围添加一些(转义的)引号将是一个字符串:

$product = "apples";
$quantity = 5;
echo '<button onclick = "carryOut('.$quantity.',\''.$product.'\')">Click me</button>';

演示:http ://sandbox.onlinephpfunctions.com/code/d3465133e571186d423e5433b71033ea1905a306

这将输出

<button onclick = "carryOut(5,'apples')">Click me</button>

在生成的 JavaScript 中正确引用了硬编码的“apples”字符串。

这在网页中使用时效果很好。演示:

function carryOut(q, p) {
  alert(q);
  alert(p);
}
<button onclick = "carryOut(5,'apples')">Click me</button>


推荐阅读