使用Java脚本从已加载的iframe检索HTTP状态代码
时间:2020-03-05 18:45:13 来源:igfitidea点击:
我使用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>'; ?>