Jquery 如何在ajax调用中传递输入类型文件数据
我有我的表格Jquery 如何在ajax调用中传递输入类型文件数据,jquery,Jquery,我有我的表格 <form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"> Photo <input type="file" name="image" size="30" /> <input type="submit" name="upload" value="Upload"
<form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
Photo <input type="file" name="image" size="30" />
<input type="submit" name="upload" value="Upload" />
</form>
这是不可能的
浏览器不支持通过ajax调用发送数据
公认的解决方法是在后台将文件发布到隐藏的
iframe
(看起来像ajax
)。这里的解决方案是找到您选择的“ajax
fileupload”库,并使用它来上传文件 我在firefox和chrome上尝试过类似的东西:
<form id="guestForm" action="<?php echo $_SERVER["PHP_SELF"];?>" method="POST" enctype="multipart/form-data">
<input type="file" id="fileInput" name="fileInput" />
<input type="button" value="submit" id="ajaxSubmit" />
</form>
<script type="text/javascript">
$(function () {
$("#ajaxSubmit").click( function () {
var fd = new FormData();
fd.append( "fileInput", $("#fileInput")[0].files[0]);
$.ajax({
url: 'process.php',
type: 'POST',
cache: false,
data: fd,
processData: false,
contentType: false,
beforeSend: function () {
$("#output").html("Uploading, please wait....");
},
success: function () {
$("#output").html("Upload success.");
},
complete: function () {
$("#output").html("upload complete.");
},
error: function () {
alert("ERROR in upload");
}
});
});
});
</scirpt>
试试这个:
$.ajax( {
type: 'POST',
url: 'process.php',
data: new FormData( this ),
processData: false,
contentType: false,
cache: false,
success: function(data){
}
});
这不是真的。。。请在JavaScript中查找XHR2对象。它100%支持它。这在大多数现代html5浏览器中都是可能的。iframe解决方案实际上仅在您需要支持IE8代浏览器时才适用。注意,FormData在更新的浏览器(如IE10及更高版本)中受支持。因此,此代码不适用于使用恐龙浏览器的用户。请参阅:我知道这是一个较老的问题,但服务器端代码对此是什么样子的?
<form id="guestForm" action="<?php echo $_SERVER["PHP_SELF"];?>" method="POST" enctype="multipart/form-data">
<input type="file" id="fileInput" name="fileInput" />
<input type="button" value="submit" id="ajaxSubmit" />
</form>
<script type="text/javascript">
$(function () {
$("#ajaxSubmit").click( function () {
var fd = new FormData();
fd.append( "fileInput", $("#fileInput")[0].files[0]);
$.ajax({
url: 'process.php',
type: 'POST',
cache: false,
data: fd,
processData: false,
contentType: false,
beforeSend: function () {
$("#output").html("Uploading, please wait....");
},
success: function () {
$("#output").html("Upload success.");
},
complete: function () {
$("#output").html("upload complete.");
},
error: function () {
alert("ERROR in upload");
}
});
});
});
</scirpt>
$.ajax( {
type: 'POST',
url: 'process.php',
data: new FormData( this ),
processData: false,
contentType: false,
cache: false,
success: function(data){
}
});