PHP使用新的FormData()和append()处理来自XMLHttpRequest2的$\ POST
使用PHP如何处理通过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
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
)但我需要进行测试。请访问我的个人资料/网站,查看您的贡献,谢谢!