代码之家  ›  专栏  ›  技术社区  ›  John Millikin

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

  •  46
  • John Millikin  · 技术社区  · 18 年前

    我使用jQuery表单插件进行异步表单提交。对于包含文件的表单,它将表单复制到隐藏的iframe中,提交它,然后复制回iframe的内容。问题是我不知道如何找到服务器返回的HTTP状态代码。例如,如果服务器返回404,来自iframe的数据将被正常复制并作为常规响应处理。

    我试着在iframe对象中寻找 status_code


    这个 $.ajax() 函数无法使用,因为它不支持上载文件。据我所知,异步上载文件的唯一方法是使用隐藏 iframe

    2 回复  |  直到 17 年前
        1
  •  19
  •   Coyod    16 年前

    试试这样的方法:

    <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>';
    ?>
    
        2
  •  -3
  •   choi gray    11 年前

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