0

我正在尝试使用 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 并且工作正常。当我在 Wireshark 中比较 IE 和 Firefox 时,实际的 HTTP 数据包是相同的。

被难住了……

4

1 回答 1

0

我之前也遇到过同样的问题,结果发现文件在磁盘上,如果您遇到同样的情况,那么通过将其放在 Web 服务器上来测试页面。

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

于 2012-04-18T15:16:58.080 回答