PHP使用新的FormData()和append()从XMLHttpRequest2处理$ _POST

时间:2015-10-14 20:00:10

标签: php ajax xmlhttprequest-level2

使用PHP如何处理通过XMLHttpRequest2new 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;
}

1 个答案:

答案 0 :(得分:1)

如果id是表单元素,您可以使用new FormData(id)创建FormData。无需遍历表单的所有元素,因为FormData可以自己完成。