我正在尝试查看 . 中包含哪些内容[object FormData]
,特别是在名称应为 . 的特定元素中Name
。我想提醒它,检查内容是否正确,但这样做会返回undefined
:
alert(fd['Name']);
我很确定我正在正确加载表单数据,所以我想知道问题是否在于我以错误的方式访问数据......
PS 警报仅fd
返回[object FormData]
我正在尝试查看 . 中包含哪些内容[object FormData]
,特别是在名称应为 . 的特定元素中Name
。我想提醒它,检查内容是否正确,但这样做会返回undefined
:
alert(fd['Name']);
我很确定我正在正确加载表单数据,所以我想知道问题是否在于我以错误的方式访问数据......
PS 警报仅fd
返回[object FormData]
IvanZh 告诉我这种方法对他不起作用,这促使我对 HTML5FormData
对象进行了一些研究。事实证明,我对此完全错误(请参阅下面的旧错误答案)。的所有数据都FormData
驻留在本机代码中。这意味着浏览器以其实现语言处理表单字段和文件上传的数据。
引用MDN:
注意:... FormData 对象不是可字符串化的对象。如果要对提交的数据进行字符串化,请使用前面的纯 AJAX 示例。另请注意,尽管在此示例中存在一些文件字段,但当您通过 FormData API 提交表单时,您也不需要使用 FileReader API:文件会自动加载和上传。
无法在 JavaScript 中表示此信息,因此我将其简单地序列化为 JSON 的幼稚建议将不起作用(这促使我想知道为什么首先接受此答案)。
根据您要实现的目标(例如,如果您只是尝试调试),简单地从返回相关 JSON 元数据的服务器端脚本中反弹此信息可能是可行的。例如,在 PHP 中,您可以将 FormData 发送到analyzeForm.php
,它可以轻松访问您在相关请求超全局下附加到 FormData 的所有内容。该脚本将消化表单的内容并以易于解析的 JSON 格式返回相关信息。这是非常低效的,所以它可能不适合生产环境,但它是一些东西。
旧的错误答案:
您可以尝试使用:
alert(JSON.stringify(fd));
查看结构的文本表示fd
。
您也可以使用console.log
,但这是一项非标准功能,不能保证在所有浏览器中都存在。
User Spokey 在这里使用 jsFiddle 向我介绍了这种技术,它非常方便地“查看” formData 对象中的值,基本逻辑是:
function submitFormFunction() {
//create formData object
var myFormData = new FormData();
// get the values from some input fields
var myKey1 = $("input[name='my_field_one']").val();
var myKey2 = $("input[name='my_field_two']").val();
// append the values to the formData object, whilst also defining their key names
myFormData.append("my_field_one",myKey1);
myFormData.append("my_field_two",myKey2);
// mock implementation - in order to view what is being sent
var xhr = new XMLHttpRequest;
xhr.open('POST', '/echo/html/', true);
xhr.send(myFormData);
}
只需在 Firebug 中打开“网络”选项卡,您就可以看到这些值。
你应该做:
console.log(fd['Name']);
在大多数浏览器中,尤其是 chrome,您打开开发者工具 (F12) 并查看控制台。
您将获得对象的一个很好的可扩展视图,并且可以对其进行检查。