Retrieving HTTP status code from loaded iframe with Javascript

后端 未结 2 1311
野性不改
野性不改 2020-11-29 06:17

I used the jQuery Form plugin for asynchronous form submission. For forms that contain files, it copies the form to a hidden iframe, submits it, and copies back the iframe\'

相关标签:
2条回答
  • 2020-11-29 07:04

    You can't get page headers by JS, but you can distinguish error from success: Try something like this:

    <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>
    

    On server side:

    /*
      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>';
    ?>
    
    0 讨论(0)
  • 2020-11-29 07:05

    You can't retrieving HTTP status code from loaded "iframe" directly. But when an http error occured, the server will returned nothing to the "iframe". So the iframe has not content. you can check the iframe body, when the body of iframe is blank, use ajax with the same url to get the response from server. Then you can retrieve the http status code from response.

    0 讨论(0)
提交回复
热议问题