我使用了jQuery Form插件进行异步表单提交。对于包含文件的表单,它会将表单复制到一个隐藏的iframe中,然后提交表单,并复制回iframe的内容。问题是我无法找出服务器返回的HTTP状态代码。例如,如果服务器返回404,则来自iframe的数据将被正常复制并视为常规响应。
我尝试在iframe对象中寻找某种status_code属性,但是没有找到类似的东西。
$.ajax()
函数不能使用,因为它不支持上传文件。我知道的唯一一种异步上传文件的方法是使用隐藏的iframe
方法。
我使用了jQuery Form插件进行异步表单提交。对于包含文件的表单,它会将表单复制到一个隐藏的iframe中,然后提交表单,并复制回iframe的内容。问题是我无法找出服务器返回的HTTP状态代码。例如,如果服务器返回404,则来自iframe的数据将被正常复制并视为常规响应。
我尝试在iframe对象中寻找某种status_code属性,但是没有找到类似的东西。
$.ajax()
函数不能使用,因为它不支持上传文件。我知道的唯一一种异步上传文件的方法是使用隐藏的iframe
方法。
你无法通过JS获取页面头信息,但你可以区分错误和成功:尝试像这样:
<script type="text/javascript">
var uploadStarted = false;
function OnUploadStart(){
uploadStarted = true;
}
function OnUploadComplete(state,message){
if(state == 1)
alert("Success: "+message);
else
if(state == 0 && uploadStarted)
alert("Error:"+( message ? message : "unknow" ));
}
</script>
<iframe id="uploader" name="uploader" onload="OnUploadComplete(0)" style="width:0px;height:0px;border:none;"></iframe>
<form id="sender" action="/upload.php" method="post" target="uploader" enctype="multipart/form-data" onsubmit="OnUploadStart()">
<input type="file" name="files[upload]"/>
<input type="submit" value="Upload"/>
</form>
在服务器端:
/*
file: upload.php
*/
<?php
// do some stuff with file
print '<script type="text/javascript">';
if(success)
print 'window.parent.OnUploadComplete(1,"File uploaded!");';
else
print 'window.parent.OnUploadComplete(0, "File too large!");';
print '</script>';
?>
POST
一样提交它,那么可以使用ajax。 - Hashbrown