大家好,我已经讨论了很多关于双qoutes变量的问题。但我不知道为什么那些不适合我。 我的情况是这个
onclick="cBack(this.form,{$pageurl},{$token})"
我的页面中有这种代码..当点击按钮时它会调用一个函数。但在我的情况下它不能正常工作。它在我的控制台中显示了一个引用错误..
我的回调函数
function cBack(frm,pageurl,token)
{
pageurl=pageurl.trim();
frm.method="post";
frm.action=pageurl+'?gtoken='+token;
frm.submit();
}
帮我解决这个问题..
答案 0 :(得分:1)
$pageurl
和$token
是字符串,需要这样的引号:
onclick="cBack(this.form,'{$pageurl}','{$token}')"
使用普通的PHP并且没有模板引擎:
onclick='cBack(this.form,<?php echo json_encode($pageurl) ?>, <?php echo json_encode($token) ?>)'
注意我切换到单引号,因为json_encode将使用双引号。无论变量的内容如何,这都会产生保存(均值编码)JavaScript参数。
答案 1 :(得分:0)
我不会使用内联事件处理程序。我会有这样一个元素:
echo '<button data-page-url="' . $pageurl . '" data-token="' . $token . '">Do something</button>';
在JavaScript代码中,为具有data-page-url
属性的所有元素注册事件侦听器:
Array.from(document.querySelector('[data-page-url]')).forEach(function (element) {
element.addEventListener('click', cBack.bind(
null,
element.form,
element.getAttribute('data-page-url'),
element.getAttribute('data-token')
));
});