2012-04-18 8 views
0

マルチパート/フォームデータHTMLフォームを使用して、サーブレットにファイルをアップロードしようとしています。私はjQueryとajaxFormプラグインを使用しています。返答時には、HTTPステータスコードが何であるかを調べるためのチェックが行われます。 ChromeとFirefoxでサーブレットが正常に実行された場合、HTTPコードは200で正しく表示されます。Internet Explorerがマルチパート/フォームとAJAX投稿でHTTP 200を返さないのはなぜですか?

HTTPレスポンスコードが0でreadystateが未定義の場合は、enctypeをmultipart/form-dataにするたびに表示されます。

次の例を参照してください:

<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であり、正常に動作していることが分かります。実際のHTTPパケットは、IEとFirefoxの間のWiresharkで比較すると同じです。困惑

....

答えて

0

私は前に同じ問題を持っていたし、あなたがして、Webサーバー上に置くことにより、ページをテストして同じケースがある場合には、ファイルがディスク上にあったことが判明。

参考:これにチェックするための http://www.pearweb.com/javascript/XMLHttpRequest.html

+0

おかげで...そのローカルおよびポストではないが、どこかに行くので、私は、サーバー上に置かれてきた私のサンプル。送信先はホストと同じです。ファイルのアップロードは正常に動作しますが、レスポンスはIEで乱されます。何らかの理由でhttpステータスコードを確認できません。 –

+0

Firefoxでxhr.statusTextが返されますか? –

+0

IEのstatusText = 'n/a'です。 –

関連する問題