为什么Internet Explorer没有返回带有multipart / form和AJAX帖子的HTTP 200?

时间:2012-04-18 13:41:08

标签: jquery forms file-upload ajaxform

我正在尝试使用multipart / form-data HTML表单来上传文件到servlet。我正在使用jQuery和ajaxForm插件。在响应中,检查完成以查看HTTP状态代码是什么。在使用servlet成功的Chrome和Firefox中,HTTP代码是正确的200。

在Internet Explorer中,只要我的enctype为multipart / form-data,HTTP响应代码为0且未定义readystate就会出现。

请参阅以下示例:

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>
(function() {
// prepare the form when the DOM is ready 
$(document).ready(function() { 

    var options = { 
        target:        '#status',   
        success:       onSuccess  
    }; 

    // bind form using 'ajaxForm' 
    $('#myForm').ajaxForm(options); 
}); 
function onSuccess(responseText, statusText, xhr, $form)  { 
    alert('HTTP Status: ' + xhr.status + '\r\nReadyState: ' + xhr.readyState); 
} 

})();       
</script>
</head>
<body >
    <div>
        <form id="myForm" action="htmlFormTest.jsp" method="post" enctype="multipart/form-data">
           Sample Text: <input type="text" name ="sample" id="sample" value="sample" />
            <input type="submit" value="Go!">
        </form>
    </div>

     <div id="status"></div>
</body>
</html>

如果我有一个“正常”的形式,它工作正常...似乎是多部分。此外,使用Wireshark和HTTPWatch,我可以看到实际的HTTP响应是200并且工作正常。当我在IE和Firefox之间的Wireshark中进行比较时,实际的HTTP数据包是相同的。

...难倒

1 个答案:

答案 0 :(得分:0)

之前我遇到过同样的问题,结果证明该文件在磁盘上,如果您遇到同样的情况,请将该页面放在Web服务器上进行测试。

参考: http://www.pearweb.com/javascript/XMLHttpRequest.html