jQuery $.ajax 中获取原生 XMLHttpRequest 对象及 FormData 上传示例
作者:百宝袋时间:2026-10-30 12:56:58浏览:92
本文介绍如何在 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 对象的方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!
作者最新文章
JS中parseInt与Number转整数的核心区别及适用场景
2026-11-05 17:35:53
定制 Quill.js 主题样式:修改默认 CSS 与添加自定义类名
2026-11-04 11:21:35
混淆JS代码怎么在线反混淆并格式化阅读
2026-11-03 21:46:39
JS在线编辑器代码报错怎么调试?控制台使用技巧
2026-11-03 21:24:56
从 marked.js 旧版本升级到最新版:API 变更与迁移指南
2026-11-03 17:38:17
