使用PHP如何处理通过XMLHttpRequest2
与new FormData()
和append()
一起发送的数据,如传统表单数据?
在我的AJAX参数处理函数中,参数如下所示:
q1=v1&q2=v2&q3=v3
您可以使用print_r($_POST);
并确定访问$_POST['q1']
以轻松获取值v1
。
在我使用PHP并使用XMLHttpRequest2
时,在服务器上使用new FormData()
和append()
测试print_r($_POST);
时,我得到以下信息:
-----------------------------3875113001076
Content-Disposition: form-data; name="q1"
v1
-----------------------------3875113001076
Content-Disposition: form-data; name="q2"
v2
-----------------------------3875113001076
Content-Disposition: form-data; name="q3"
v3
但我无法再访问$_POST['q1'];
。
JavaScript AJAX参数功能
function ajax_parameters(id)
{
var f;
var fd = new FormData();
if (id_(id) || typeof id=='object' && id.nodeName.toLowerCase()=='form')
{
if (id_(id)) {f = id_(id);}
else {f = id;}
for (var i = 0;i<f.elements.length;i++)
{
if (f.elements[i].type!='file')
{
fd.append(f.elements[i].name,f.elements[i].value);
}
else
{
for (var j = 0; j < f.elements[i].files.length; ++j)
{
fd.append(f.elements[i].name+'['+j+']', f.elements[i].files[j],f.elements[i].files.item(j).name);
}
}
}
}
return fd;
}
答案 0 :(得分:1)
如果id是表单元素,您可以使用new FormData(id)
创建FormData。无需遍历表单的所有元素,因为FormData可以自己完成。