Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript [object FormData]中的警报特定元素(用于测试)_Javascript_Ajax_Form Data - Fatal编程技术网

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

Javascript [object FormData]中的警报特定元素(用于测试),javascript,ajax,form-data,Javascript,Ajax,Form Data,我试图查看[object FormData]中包含哪些内容,特别是在名称应为name的特定元素中。我想提醒它,检查内容是否正确,但这样做会返回未定义的: alert(fd['Name']); 我很确定我加载的表单数据是正确的,所以我想知道问题是我是否以错误的方式访问了数据 PS alerting onlyfd返回[对象表单数据]您应该执行以下操作: console.log(fd['Name']); 在大多数浏览器中,尤其是chrome浏览器中,您可以打开开发者工具(F12)并查看控制

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

    alert(fd['Name']);
我很确定我加载的表单数据是正确的,所以我想知道问题是我是否以错误的方式访问了数据

PS alerting only
fd
返回
[对象表单数据]

您应该执行以下操作:

console.log(fd['Name']);
在大多数浏览器中,尤其是chrome浏览器中,您可以打开开发者工具(F12)并查看控制台


您将获得对象的良好可扩展视图,您可以对其进行检查。

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

引述:

注:。。。FormData对象不是可字符串化的对象。如果 如果要对提交的数据进行字符串化,请使用前面的纯AJAX 例子。还要注意的是,虽然在这个例子中有一些文件 字段,当您通过FormData API提交表单时 也不需要使用FileReader API:文件会自动 加载并上传

没有办法用JavaScript表示这些信息,因此我天真的建议将其序列化为JSON是行不通的(这让我想知道为什么这个答案一开始就被接受了)

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

旧的错误答案:

您可以尝试使用:

alert(JSON.stringify(fd));
查看
fd
结构的文本表示


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

用户Spokey使用JSFIDLE介绍了这项技术,它非常方便地“查看”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中打开“Net”选项卡,您就可以看到值

显示更多的代码,以及你的HTML。我不能在FF和Chrome中重复你的方法。我刚得到一个空对象:'{}@IvanZh,这是因为你的对象是空的。一个空对象序列化为
{}
,这就是您看到的。可能是我做了一些不正确的事情吗?请看这个,或者在浏览器控制台中运行:
var fd=new FormData;fd.追加(“测试”,123);警报(JSON.stringify(fd))
@IvanZh事实上,我做了一些研究,但我完全错了。请参阅更新的答案。