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

PHP handle $_POST from XMLHttpRequest2 with new FormData() and append()

如何使用 PHP 处理通过 XMLHttpRequest2new FormData()append() 发送的数据,就像传统表单数据一样?

在我的 AJAX 参数处理函数中,参数如下所示:

q1=v1&q2=v2&q3=v3

您可以使用 print_r($_POST); 并确定访问 $_POST['q1'] 以轻松获取值 v1


在服务器上使用 new FormData()append() 测试 XMLHttpRequest2 时,当我有 PHP 并使用 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;
}

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