0

我有这个js

function fill(a,b)

还有这个php代码:

$a_value; $b_value;

我想以某种方式将这两个 var 插入到下面的行中,这样我就可以将它们作为 js 函数的参数运行fill

编辑:

echo '<li  onClick="fill(\''.$result['name'].'\');">'.$result['name'].'</li>';

第二个参数必须是 $b_value 及其字符串文本

4

5 回答 5

1

切换单引号 ( ') 和双引号 ( ")。那应该给出字符串中的值。

像这样:

echo "<li onClick='fill($a_value , $b_value);'>".$result['name'].'</li>';

如果变量是字符串,您还需要用转义将它们包围:

echo "<li onClick='fill(\"$a_value\" , \"$b_value\");'>".$result['name'].'</li>';

编辑

回复@Tom 关于遵守标准的评论。

您可以使用所有带转义的双引号:

echo "<li onClick=\"fill($a_value , $b_value);\">".$result['name'].'</li>';

如果变量是字符串,则需要双重转义,一次用于 PHP,一次用于 HTML:

echo "<li onClick=\"fill(\\"$a_value\\" , \\"$b_value\\");\">".$result['name'].'</li>';

或者,对字符串使用单引号:

echo "<li onClick=\"fill('$a_value' , '$b_value');\">".$result['name'].'</li>';
于 2013-06-04T19:17:50.220 回答
1

您需要json_encode将 PHP 变量转换为 JS-ready 格式。此外,您将需要运行它htmlspecialchars以确保在属性中使用它是安全的。

一个更安全的选择是:

echo '<li data-avalue="'.htmlspecialchars($a_value).'"
    data-bvalue="'.htmlspecialchars($b_value).'"
    onClick="fill(this.getAttribute(&quot;data-avalue&quot;,'
        .'this.getAttribute(&quot;data-bvalue&quot;);">'.$result['name'].'</li>';

这绝对没有歧义。

于 2013-06-04T19:17:26.600 回答
0

PHP 基本语法:单引号'字符串插入变量。您正在向 JS 代码发送文字$, a, _,v等...,这将被视为未定义的变量。

尝试

echo "<li  onClick=\"fill($a_value , $b_value);\">".$result['name'].'</li>';
     ^--           ^--                         ^--^---

反而。

于 2013-06-04T19:19:10.663 回答
0

尝试这个

echo "fill('".$a_value."','".$b_value."');"
于 2013-06-04T19:17:32.710 回答
-1

我不是 100% 确定这会奏效,但你可以试试
function fill(<?php echo $a_value; ?>,<?php echo $b_value; ?>)

于 2013-06-04T19:18:39.520 回答