【问题标题】:How to resolve uncaught error in javascript?如何解决javascript中未捕获的错误?
【发布时间】:2023-02-03 06:38:05
【问题描述】:

我有一个 html/javascript/php 代码,如下所示,在 echo 语句中,我添加了一个按钮,单击它会调用 deleteAttribute() 函数。

在 echo 语句 (type = "button") 上,我收到一个错误:

"Uncaught SyntaxError: missing ) after argument list"

问题陈述:

我想知道我需要在 while 循环中的第三个 echo 语句中进行哪些更改,以便我可以避免此错误"Uncaught SyntaxError: missing ) after argument list"

【问题讨论】:

  • 我觉得没问题,请尝试检查 $row、$row['attribute'] 中的值

标签: javascript php html


【解决方案1】:

传递 $row['attribute'] 时出现问题,引用混合在一起,因此一个简单的解决方案是将其包装在一个变量中并将其传递给函数,如下所示:

<body>
<?php
    while ($row = $result->fetch_assoc()) {
echo '        <dt><a href="submit-address.php?id='.rawurlencode($row['attribute']).'&action=' . rawurlencode($row['action']).'&name=' . rawurlencode($row['map_value_name']).'">'."
";
  echo '                '.$row['attribute'].'</a> ('.$row['owner'].')'."
";
  $attribute = $row['attribute'];
  echo '        <input type="button" value ="Delete" class="btn btn-map btn-danger" onclick="deleteAttribute('.$attribute.')"/>';
  echo '        </dt>'."
";
echo '        <dd>'."
";
  echo '            '.$row['description']."
";
  echo '        </dd>'."
";
}
?>
</body>

这是工作截图:

【讨论】:

  • 我仍然遇到同样的错误。
  • 我已经添加了它正在运行的屏幕截图。
  • 您可以复制并粘贴整个正文部分并用您的代码替换它,然后重新加载您的浏览器吗?可能是缓存问题
  • 我附上了截图。
  • 你能提供更新版本的代码和完整的截图吗?
【解决方案2】:

您遇到的 SyntaxError 是未能封装文件名的结果。

只需将 onclick="deleteAttribute(test png000)" 更改为 onclick="deleteAttribute('test png000')" 即可解决您的语法错误。

如果没有适当的封装,您的脚本会认为“test png000”是两个独立的变量,而不是您试图传递给函数的字符串。

在结束时,我确实想让您注意使用 alternative syntax for control structures,这将使您的代码库更具可读性和易于调试,而不会因冗余回声而变得一团糟。

此外,无需将一长串 URL 编码值连接到查询中,您可以简单地利用 PHP 的 http_build_query 使您的代码更具可读性,同时保持整洁。请参考我下面的代码。

我希望这有帮助!

<body>
    <?php while($row = $result->fetch_assoc()): ?>
        <dt>
            <a href="abcde.php?id=<?php echo http_build_query(array('id' => $row['attribute'], 'action' => $row['action'], 'name' => $row['map_value_name'])); ?>">
                <?php echo $row['attribute']; ?>
            </a>
            
            (<?php echo $row['owner']; ?>)
            
            <input type="button" value="Delete" class="btn btn-map btn-danger" onclick="deleteAttribute('<?php echo $row['attribute']; ?>')"/>
        </dt>
        
        <dd>
            <?php echo $row['description']; ?>
        </dd>
    <?php endwhile; ?>
</body>

<script>
    function deleteAttribute(attribute) {
        if(confirm('Are you sure you want to delete ' + attribute + ' ?')) {
            jQuery.ajax({
                url: 'delete.php',
                type: 'post',
                data: {
                    attribute: attribute
                }
            });
        }
    }
</script>

【讨论】:

  • 有什么办法可以在 echo 中解决这个问题吗?
  • @flash 它在解决方案中,伙计。您将文件名封装在您试图将其作为字符串传递给函数的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多