jQuery $.ajax 中获取原生 XMLHttpRequest 对象及 FormData 上传示例

作者:百宝袋

时间:2026-10-30

浏览:93

本文介绍如何在 jQuery 的 $.ajax 方法中获取原生 XMLHttpRequest 对象,并结合 FormData 实现表单与文件对象的同步提交。通过示例代码展示如何将 form 表单数据与 file 对象合并,发送至 PHP 后端进行处理,适用于需要处理文件上传的 Web 开发场景。

文章目录

jQuery $.ajax 获取原生 XMLHttpRequest 对象与文件上传实现

以下代码展示了关键实现部分:


<script> 
$('.screenshot_input').change(function (){ 
//获取file对象 即相当于可以直接post的$_FILES数据 
var domFile = $(this)[0].files[0] 
var domForm = $('#testForm')[0] 
//将form对象直接作为参数 new FormData对象 
var formData = new FormData(domForm); 
//追加file 对象 
formData.append('file',domFile); 
$.ajax({ 
url:'{{ path( 'acme_admin_app_dealAppScreenShot') }}', 
type: "POST", 
data: formData, 
processData: false, // tell jQuery not to process the data 
contentType: false, // tell jQuery not to set contentType 
xhr: function(){ //这是关键 获取原生的xhr对象 做以前做的所有事情 
var xhr = jQuery.ajaxSettings.xhr(); 
xhr.upload.onload = function (){ 
alert('finish downloading') 
} 
xhr.upload.onprogress = function (ev) { 
if(ev.lengthComputable) { 
var percent = 100 * ev.loaded/ev.total; 
console.log(percent,ev) 
} 
} 
return xhr; 
}, 
success:function(data){ 
alert(data) 
} 
}) 
}) 
</script> 
Array 
( 
[name] => cooff 
[email] => qq.comaa 
) 
Array 
( 
[file] => Array 
( 
[name] => yunce2.0测试.apk 
[type] => application/vnd.android.package-archive 
[tmp_name] => /tmp/php4Jxt0c 
[error] => 0 
[size] => 6476627 
) 
) 

这种方式可以一次性将 form 表单数据与 file 对象发送至 PHP 后端控制器进行处理,操作便捷。

上述内容介绍了在 jQuery 使用 $.ajax 时获取原生 XMLHttpRequest 对象的方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章