Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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
PHP使用新的FormData()和append()处理来自XMLHttpRequest2的$\ POST_Php_Ajax_Xmlhttprequest Level2 - Fatal编程技术网

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

PHP使用新的FormData()和append()处理来自XMLHttpRequest2的$\ POST,php,ajax,xmlhttprequest-level2,Php,Ajax,Xmlhttprequest Level2,使用PHP如何处理通过XMLHttpRequest2发送的数据,使用new FormData()和append()与传统表单数据类似? 在我的AJAX参数处理函数中,参数如下所示: q1=v1&q2=v2&q3=v3 -----------------------------3875113001076 Content-Disposition: form-data; name="q1" v1 -----------------------------3875113001076

使用PHP如何处理通过
XMLHttpRequest2
发送的数据,使用
new FormData()
append()
与传统表单数据类似?

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

q1=v1&q2=v2&q3=v3
-----------------------------3875113001076
Content-Disposition: form-data; name="q1"
v1

-----------------------------3875113001076
Content-Disposition: form-data; name="q2"
v2

-----------------------------3875113001076
Content-Disposition: form-data; name="q3"
v3
您可以使用
print\r($\u POST)
并确定访问
$\u POST['q1']
以轻松获取值
v1


当我使用PHP并使用
print\r($\u POST)时,在服务器上使用
new FormData()
append()
测试
XMLHttpRequest2
我得到以下信息:

q1=v1&q2=v2&q3=v3
-----------------------------3875113001076
Content-Disposition: form-data; name="q1"
v1

-----------------------------3875113001076
Content-Disposition: form-data; name="q2"
v2

-----------------------------3875113001076
Content-Disposition: form-data; name="q3"
v3
但是,我无法再访问
$\u 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;
}
函数ajax\u参数(id)
{
var f;
var fd=新FormData();
if(id|(id)| typeof id='object'&&id.nodeName.toLowerCase()='form')
{
如果(id_(id)){f=id_(id);}
else{f=id;}

对于(var i=0;i如果id是表单元素,您可以使用
new FormData(id)
来创建表单数据。无需遍历表单的所有元素,因为表单数据本身就可以做到这一点。

奇怪的是,我刚刚用
print\r($\u POST)测试了AJAX
并且可以很好地检索结果。也许发布您正在使用的完整代码?@GGG更新,添加
encodeURIComponent()
似乎没有任何好处。您可以使用
新表单数据(id)
如果
id
是表单元素,则创建FormData。无需迭代表单的所有元素,因为FormData本身可以完成此操作。@GGG好的,继续处理它……此外,您还需要迭代文件,因为FormData不这样做。Firefox 38 ESR显然会自动确定正确的mime(
application/x-www-form-urlencoded
multipart/form data
)但我需要进行测试。请访问我的个人资料/网站,查看您的贡献,谢谢!