将带双引号的变量传递给javascript

时间:2012-11-20 12:14:19

标签: php javascript string codeigniter

在我的控制器中,我有一个来自数据库的字符串。我用

$user_id = $this->input->post('user_id');

$this->load->model('database','', TRUE);

$projects = $this->database->get_projects($user_id);

    foreach($projects as $project)
    {

        echo '  <div onclick="someFunction(\''.$project['description'].'\')"></div>';
    }

将值传递给Javascript。 一切正常,除非字符串中有双引号。 Firebug抛出

  

未终止的字符串文字

我试过了:

onclick = "someFunction(\''.addslashes($project['description']).'\')"

$description = str_replace('"', '&quot;', $project['description']);
onclick = "someFunction(\''.$description.'\')";

但它不起作用。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

尝试:

onclick = someFunction(<?php echo '"'.$myVariable.'"'; ?>);

你不能引用参数的括号......这是全局的,不仅适用于JS。

对于使用js或html混合PHP,只需在任何需要的地方使用echo。如果你想要更清晰的代码,可以谷歌搜索MVC模型。

答案 1 :(得分:0)

我认为你能做的最好的事情是创建一个包含这段代码的视图:

<div onclick="someFunction('<?php echo $project['description'] ?>')"></div>

并在您的控制器中调用它。最终你可以使用php函数addslashes()来引用字符串/字符。

如果你需要将这个html存储在控制器的变量中,你可以简单地使用调用视图的第三个参数;它解释了here

更新: 尝试使用htmlentities而不是addslashes