将PHP变量作为字符串传递给javascript

将PHP变量作为字符串传递给javascript,javascript,php,html,Javascript,Php,Html,不知何故,我的php函数(它创建了一个按钮,调用了一个javascript函数)并没有将php变量作为字符串传递 function addTableEntry($id, $name) { echo('<tr> <td>'.$id.'</td> <td>'.$name.'</td> <td><a href="#groups" on

不知何故,我的php函数(它创建了一个按钮,调用了一个javascript函数)并没有将php变量作为字符串传递

function addTableEntry($id, $name)
{
    echo('<tr>
              <td>'.$id.'</td>
              <td>'.$name.'</td>
              <td><a href="#groups" onClick="activateGroupSettingsOverlay('.$id.','.$name.')">Manage group</a>
              </tr>');
}

addTableEntry(1,"livingroom");
函数addTableEntry($id,$name)
{
回声('
“.$id”
“.$name。”
');
}
添加表格条目(1,“起居室”);
每当单击函数
activateGroupSettingsOverlay()
时,总是使用(1,livingroom)调用它,并且我收到一个错误“livingroom未定义”

如何将$name作为字符串传递?我试着在它周围加上引号(比如:
“.$id.”、“.$name.”“
,但这不起作用。

改变

onClick="activateGroupSettingsOverlay('.$id.','.$name.')"


@chandresh_cool是对的,你必须“强制”引用

onClick="activateGroupSettingsOverlay('.$id.',\''.$name.'\')"
如果要保留引号,必须在字符串中“转义”引号:

echo '..... onClick="activateGroupSettingsOverlay('.$id.',\''.$name.'\')"....'

重要的是(单)引号前的反斜杠。

它不起作用的原因是javascript中没有包含引号

虽然其他答案“解决”了这个问题,但他们并没有真正解释它,为了澄清这一点

  <td><a href="#groups" onClick="activateGroupSettingsOverlay('.$id.','.$name.')">Manage group</a>
修改这一行是您所要更改的全部内容

  <td><a href="#groups" onClick="activateGroupSettingsOverlay('.$id.',\''.$name.'\')">Manage group</a>
-向下滚动至其显示的位置
herdeoc

这样做的好处是,您不必转义单引号,这使它在我看来更具可读性。herdoc或NEWDOC的诀窍是结尾
HTML;
必须开始一行,并且可以是该行上的唯一内容,没有前导或尾随空格,否则它将无法正常工作

在这种情况下,它可能很简单,可以忽略您的操作方式,但如果您需要在javascript中使用串联,则引号将成为一个麻烦。例如,您想使用javascript添加一个html图像标记,并使用javascirpt变量作为图像名,但使用php获取服务器主机名(javascript中的html和变量)

echo'
var foo=“image.jpb”;
$(body.html(\'\');
';
这很快变得难以管理,因为(我甚至不知道我是否有这个权利),比较一下这有多干净,因为你没有浪费php中的引号

echo <<<HTML
     var foo = "image.jpb";
          $(body).html( '<img src="{$_SERVER['HTTP_HOST']}'+foo+'" />' );
HTML;
echo
请尝试使用此代码:-
函数addTableEntry($id,$name)
{
回声(“
“$id。”
“$name。”
");
}
添加表格条目(1,“起居室”);

onClick=“activateGroupSettingsOverlay('.$id.',\'.$name.'\')”
重要的是在引号之前的“\``来逃避它!你的答案对我很有用,谢谢杰夫!然后我会把它变成一个答案,在所有的时间之后,你可以接受其中一个答案!对不起,但这会失败(在html解析器中)!正如我在帖子中提到的,我已经试过了,有朋友也没关系,但是如果答案正确的话,他们应该给你投票。谢谢埃雷多克斯的详细解释和建议,我会调查的!当然,我看到了其他答案,但这些答案并没有真正解释问题,这就是给一个人一条鱼或教书我宁愿花时间解释这个问题,然后盲目地给出答案。
  <td><a href="#groups" onClick="activateGroupSettingsOverlay(1,'livingroom')">Manage group</a>
  <td><a href="#groups" onClick="activateGroupSettingsOverlay('.$id.',\''.$name.'\')">Manage group</a>
function addTableEntry($id, $name)
{
    echo <<<HTML 
        <tr>
            <td>'.$id.'</td>
            <td>'.$name.'</td>
            <td><a href="#groups" onClick="activateGroupSettingsOverlay({$id},'{$name}')">Manage group</a>
        </tr>
HTML;
}

addTableEntry(1,"livingroom");
 echo '
      var foo = "image.jpb";
      $(body).html( \'<img src="'.$_SERVER['HTTP_HOST'].'\'+foo+\'" />\' );
 ';
echo <<<HTML
     var foo = "image.jpb";
          $(body).html( '<img src="{$_SERVER['HTTP_HOST']}'+foo+'" />' );
HTML;
Please try with this code:-

function addTableEntry($id, $name)
{
    echo("<tr>
              <td>".$id."</td>
              <td>".$name."</td>
              <td><a href=\"#groups\" onClick=\"activateGroupSettingsOverlay($id,'$name')\">Manage group</a>
              </tr>");
}

addTableEntry(1,"livingroom");