javascript - 在 [object FormData] 中提醒特定元素(用于测试)

标签 javascript ajax form-data

我试图查看 [object FormData] 中包含哪些内容,特别是在名称应为 Name 的特定元素中。我想提醒它,检查内容是否正确,但这样做返回 undefined:

    alert(fd['Name']);

我很确定我正在正确加载表单数据,所以我想知道问题是否出在我以错误的方式访问数据...

仅 PS 警报 fd 返回 [object FormData]

最佳答案

IvanZh 告诉我这种方法对他不起作用,这促使我对 HTML5 FormData 对象进行一些研究。事实证明,我对此完全错了(请参阅下面的旧错误答案)。 FormData 的所有数据都驻留在 native 代码中。这意味着浏览器以其实现语言处理表单字段和文件上传的数据。

引用 MDN :

Note: ... FormData objects are not stringifiable objects. If you want to stringify a submitted data, use the previous pure-AJAX example. Note also that, although in this example there are some file fields, when you submit a form through the FormData API you do not need to use the FileReader API also: files are automatically loaded and uploaded.

无法在 JavaScript 中表示此信息,因此我天真的建议将其简单地序列化为 JSON 是行不通的(这让我想知道为什么这个答案首先被接受了)。

根据您尝试实现的目标(例如,如果您只是尝试调试),简单地将此信息从返回相关 JSON 元数据的服务器端脚本中反弹出来可能是可行的。例如,在 PHP 中,您可以将您的 FormData 发送到 analyzeForm.php,它可以轻松访问您在超全局相关请求下附加到 FormData 的所有内容。该脚本会消化您的表单内容,并以易于解析的 JSON 格式返回相关信息。这是非常低效的,因此它可能不适合生产环境,但它确实存在。

旧的错误答案:

您可以尝试使用:

alert(JSON.stringify(fd));

查看 fd 结构的文本表示。

您也可以使用 console.log,但这是一个非标准功能,不能保证在所有浏览器中都存在。

关于javascript - 在 [object FormData] 中提醒特定元素(用于测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662875/

相关文章:

javascript - 显示和隐藏切换js

javascript - Ajax 只加载第一条记录?

javascript - 在 javascript 中将表单数据设置为 cookie 值

javascript - 如何让 React Native 的 ScrollView 初始缩放不为 1?

javascript - 编码和解码跳过字符

PHP - 将 MySQL 中的所选项目保存在 $_SESSION 中

javascript - Web Workers 和图像预加载

javascript - 除了第一个循环之外,文件上传不会在以下循环中触发

javascript - Ajax JS/PHP 图片 uploader 不工作

javascript - 是否可以将 FormData 应用于现有表单?