在我的控制器中,我有一个来自数据库的字符串。我用
$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('"', '"', $project['description']);
onclick = "someFunction(\''.$description.'\')";
但它不起作用。
感谢您的帮助
答案 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