マルチパート/フォームデータ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で比較すると同じです。困惑
....
おかげで...そのローカルおよびポストではないが、どこかに行くので、私は、サーバー上に置かれてきた私のサンプル。送信先はホストと同じです。ファイルのアップロードは正常に動作しますが、レスポンスはIEで乱されます。何らかの理由でhttpステータスコードを確認できません。 –
Firefoxでxhr.statusTextが返されますか? –
IEのstatusText = 'n/a'です。 –