我使用 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>';
?>
关于jquery - 使用 Javascript 从加载的 iframe 中检索 HTTP 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240/