使用Javascript从加载的iframe中检索HTTP状态代码

我使用jQuery Form插件进行asynchronous表单提交。 对于包含文件的表单,它将表单复制到一个隐藏的iframe,提交它,然后复制iframe的内容。 问题是,我无法弄清楚如何find服务器返回的HTTP状态码。 例如,如果服务器返回404,则iframe中的数据将被正常复制并作为常规响应处理。

我试过在iframe对象中寻找某种status_code属性,但一直没有find类似的东西。


$.ajax()函数不能使用,因为它不支持上传文件。 我知道的asynchronous上传文件的唯一方法是使用隐藏的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>'; ?> 

您无法直接从加载的“iframe”中检索HTTP状态码。 但是当发生http错误时,服务器将不会返回任何“iframe”。 所以iframe没有内容。 您可以检查iframe正文,当iframe正文为空时,使用具有相同url的ajax从服务器获取响应。 然后你可以从响应中获取http状态码。