Joh*_*kin 47 forms ajax iframe jquery http
我使用jQuery Form插件进行异步表单提交.对于包含文件的表单,它会将表单复制到隐藏的iframe,提交它,并复制iframe的内容.问题是我无法弄清楚如何找到服务器返回的HTTP状态代码.例如,如果服务器返回404,则iframe中的数据将被正常复制并视为常规响应.
我试过在iframe对象中寻找某种status_code
属性,但是却找不到那样的东西.
该$.ajax()
功能无法使用,因为它不支持上传文件.异步上传我所知道的文件的唯一方法是使用隐藏iframe
方法.
Coy*_*yod 19
您不能通过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>
Run Code Online (Sandbox Code Playgroud)
在服务器端:
/*
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>';
?>
Run Code Online (Sandbox Code Playgroud)