0

multipart/form-data HTML フォームを使用して、サーブレットにファイルをアップロードしようとしています。jQuery と ajaxForm プラグインを使用しています。応答で、HTTP ステータス コードが何であるかを確認するためのチェックが行われます。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 に答える