【问题标题】:When form submitted: The character encoding of the html document was not declared (although it is)提交表单时:没有声明html文档的字符编码(虽然有)
【发布时间】:2021-12-22 21:09:31
【问题描述】:

我看到了一些与此相关的问题,但几乎所有问题都使用php。我只有一个简单的 html 文件,带有一个输入和一个按钮。我尝试过使用建议的解决方案,但在使用按钮提交表单后,我总是收到错误消息。我已经包含了以utf-8 结尾的字符。我也有<meta charset="utf-8" />,但在看到关于 SO 的其他解决方案时发表了评论,但我已实施但无济于事。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <script src="index.js"></script>
    <title>My Page</title>
</head>
<body>
    <form name="data-form" enctype="multipart/form-data" method="post">
        <input type="file" id="file-input">
        <button id="form-btn" type="submit">Load File</button>
    </form>
</body>
</html>

根据我的初步了解,这样读取文件应该没问题。我正在尝试上传 JSON 文件,不确定是否是问题所在。这是一个有效的 JSON,我已经检查并仔细检查了。

链接的index.js文件,目前无论如何都不会与文件上传交互,所以为了简洁起见,我没有包含它。

编辑

我想我“解决了”这个问题。更像是绕过它。我编写了一个 JS 函数 (readFile()) 以在点击时读取,并将按钮的类型更改为 type="button" 并放置一个 onclick="readFile()",现在它可以正确读取文件并执行。希望这可能会帮助遇到类似问题的其他人。我想这可以关闭。

【问题讨论】:

  • 你从哪里得到错误?浏览器控制台?表单处理程序?您需要表单上的 action 属性还是通过 JavaScript 发送?
  • 是的,它显示在控制台中。我不使用 JS 发送它(至少现在还没有)所以也许我确实需要一个 action attr。我会阅读 MDN 文档,看看这是否会带来启发。
  • 如果您不通过 JS 发送表单,该错误如何显示在浏览器控制台中?网络标签也很有帮助。
  • 我不知道,如果我这样做了,我可能不会在这里问这个问题。 javascript 文件目前什么都不做,因为没有任何函数被“插入”到index.html。如果我更改按钮 type="button" 我不会收到错误消息,但也没有任何反应。我不确定这是好是坏。
  • 好吧,我只是想让你自己理解。看来你解决了你的问题。 ??????????

标签: html


【解决方案1】:

见编辑。我使用了这个问题How to access data of uploaded JSON file? 中发布的IFFE 答案的修改版本。我不确定这是否是“技术上”的解决方案,但它适用于我的目的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-05
    • 2014-09-12
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多