gpt4 book ai didi

php - Uncaught SyntaxError : Unexpected token }

转载 作者:行者123 更新时间:2023-12-03 08:18:23 25 4
gpt4 key购买 nike

一个小时以来我一直在试图找出错误,但我找不到我的错误!
谁能告诉我为什么我总是收到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>&nbsp;<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/>";

请帮忙。 :(

最佳答案

有一些引号不会被转义,即使您确实转义了当前导致错误的双引号,但是当您对属性和JavaScript字符串使用单引号时,呈现的HTML标记仍会出错。这样,您的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>

(由于使用了 "classList",此JS示例仅在现代浏览器中有效)

关于php - Uncaught SyntaxError : Unexpected token },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21865058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com