我试图弄清楚一小时后的错误,但我无法找到错误!
任何人都可以告诉我为什么我一直收到Uncaught SyntaxError: Unexpected token }
错误?
这是我的PHP:
echo "<p style='color: orange; font-size: 25px;'>{$result['Topic']} - <button type='button' onclick='window.location.href='resources.php?subj={$result['Subject']}'' class='btn btn-sm btn-success pull-right'>Resources</button> <button onclick='window.location.href='questions.php?subj={$result['Subject']}'' class='btn btn-sm btn-success pull-right' style='margin-right: 10px;'>Questions</button> <button onclick='window.location.href='assessment.php?topic={$result['Topic']}'' class='btn btn-sm btn-success pull-right' style='margin-right: 10px;'>Assessment</button></p><hr/>";
请帮忙。 :(
答案 0 :(得分:2)
有几个引号未被转义,即使您确实转义了当前导致错误的双引号,呈现的HTML标记仍会出现错误,因为您在其中使用了单引号属性和JavaScript字符串。这样你的JS可能也不会起作用。例如:
<button onclick='window.location.href='resources.php?subj=%s''>…</button>
事实上,您的代码是一个很好的例子,为什么应该避免在字符串中使用变量。每次我需要在PHP中使用双引号时我都会觉得我做错了。也许模板引擎对您有用。最简单的版本是使用sprintf
输出那种字符串:
$template = <<<EOTEMPLATE
<p style="color: orange; font-size: 25px;">%s -
<button type="button" onclick="window.location.href=\'resources.php?subj=%s\'" class="btn btn-sm btn-success pull-right">Resources</button>
<button onclick="window.location.href='questions.php?subj=%s'" class="btn btn-sm btn-success pull-right">Questions</button>
<button onclick="window.location.href='assessment.php?topic=%s'" class="btn btn-sm btn-success pull-right">Assessment</button>
</p>
<hr/>
EOTEMPLATE;
echo sprintf( $template, $result['Topic'], $result['Subject'], $result['Subject'], $result['Topic'] );
下一个优化迭代将删除那些内联JS片段并将它们粘贴到单个JS块中(甚至更好:一个单独的* .js文件)。但是,由于您只是加载另一个页面,一个简单的链接也可以。以下代码段也应该按照您的输入建议。 (因为链接也可以看起来像一个按钮。)
$template = <<<EOTEMPLATE
<p class="btn-group">%s –
<a href="resources.php?subj=%s" class="btn btn-sm btn-success pull-right">Resources</a>
<a href="questions.php?subj=%s" class="btn btn-sm btn-success pull-right">Questions</a>
<a href="assessment.php?topic=%s" class="btn btn-sm btn-success pull-right">Assessment</a>
</p>
<hr/>
EOTEMPLATE;
echo sprintf( $template, $result['Topic'], $result['Subject'], $result['Subject'], $result['Topic'] );
然后,如果您仍然需要JavaScript(例如为这些按钮实现点击跟踪器),您可以添加一个事件处理程序来执行此操作:
<script>
// add an event listener to the document object to capture clicks on existing and future links
document.addEventListener( 'click', function( event ) {
if( event.target.tagName === 'A' && event.target.classList.has( 'btn-success' ) ) {
event.preventDefault();
// do whatever you need to do with that link
window.location.href = event.target.href;
}
}, false );
</script>
(这个JS示例仅适用于现代浏览器,因为使用了"classList")
答案 1 :(得分:1)
你的问题是这些人$result['Topic']}''
尝试类似的事情:
$topic = $result['Topic'];
然后在代码中使用topic=$topic
。
答案 2 :(得分:0)
我添加了一些转义双引号,试试运行:
echo "<p style='color: orange; font-size: 25px;'>{$result['Topic']} -
<button type='button' onclick='window.location.href=\"resources.php?subj={$result['Subject']}\"'
class='btn btn-sm btn-success pull-right'>Resources</button> <button onclick='window.location.href=\"questions.php?subj={$result['Subject']}\"'
class='btn btn-sm btn-success pull-right' style='margin-right: 10px;'>Questions</button>
<button onclick='window.location.href=\"assessment.php?topic={$result['Topic']}\"' class='btn btn-sm btn-success pull-right'
style='margin-right: 10px;'>Assessment</button></p><hr/>";
答案 3 :(得分:0)
尝试这样
echo '<p style="color: orange; font-size: 25px;">'.$result['Topic'].' -
<button type="button"
onclick="window.location.href=\'resources.php?subj='.$result['Subject'].'\'"
class="btn btn-sm btn-success pull-right">Resources</button>
<button
onclick="window.location.href=\'questions.php?subj='.$result['Subject'].'\'"
class="btn btn-sm btn-success pull-right" style="margin-right: 10px;">Questions</button>
<button
onclick="window.location.href=\'assessment.php?topic='.$result['Topic'].'\'"
class="btn btn-sm btn-success pull-right" style="margin-right: 10px;">Assessment</button></p><hr/>';
答案 4 :(得分:0)
如上所述,您正在嵌套单引号,并使HTML语法复杂化以绕过您对引号的使用。如果您要输出这么多HTML,heredoc总是有用的。如果您的编辑器像我一样聪明,它会在块中为您提供HTML语法高亮显示!
echo <<< HTML
<p style="color: orange; font-size: 25px;">
$result[Topic] -
<button type="button" onclick="window.location.href='resources.php?subj=$result[Subject]'" class="btn btn-sm btn-success pull-right">
Resources
</button>
<button onclick="window.location.href='questions.php?subj=$result[Subject]'" class="btn btn-sm btn-success pull-right" style="margin-right: 10px;">
Questions
</button>
<button onclick="window.location.href='assessment.php?topic=$result[Topic]'" class="btn btn-sm btn-success pull-right" style="margin-right: 10px;">
Assessment
</button>
</p>
<hr/>
HTML;