[object FormData]中的警报特定元素(用于测试)

don*_*don 7 javascript ajax form-data

我正在尝试查看内部包含的内容[object FormData],特别是在名称应该包含的特定元素内Name.我想提醒它,检查内容是否正确,但这样做会返回undefined:

    alert(fd['Name']);
Run Code Online (Sandbox Code Playgroud)

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

PS警报仅fd返回[object FormData]

Asa*_*din 13

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

引用MDN:

注意:... FormData对象不是可字符串对象.如果要对提交的数据进行字符串化,请使用以前的纯AJAX示例.另请注意,虽然在此示例中有一些文件字段,但是当您通过FormData API提交表单时,您也不需要使用FileReader API:文件会自动加载和上载.

没有办法在JavaScript中表示这些信息,所以我简单地将其序列化为JSON的天真建议将无效(这促使我想知道为什么这个答案首先被接受).

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

旧的错误答案:

您可以尝试使用:

alert(JSON.stringify(fd));
Run Code Online (Sandbox Code Playgroud)

查看结构的文本表示fd.

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

  • +1投票给研究和好解释! (2认同)