IE8 と 9 でしか再現できなかった珍しい問題があります。Safari、Chrome (両方とも Mac 上、Firefox (PC 上))、および IE8、9、10 をテストしました。
次のコードがあります。
$('#fileStore_newUpload').ajaxForm({
beforeSubmit: function(arr, $form, options){
options.context = $form;
},
dataType:'xml',
success: function(responseXML,status,jqXHR){
alert(jqXHR.responseText);
var xmlDoc = $.parseXML(jqXHR.responseText);
$xml = $( xmlDoc );
alert($xml.find("uploadSuccess").text());
alert($(responseXML).find('uploadSuccess').text());
}
});
IE8 と 9 を除くすべてのブラウザーで、最初の alert() 関数は次の予期される応答を返します。
<?xml version="1.0" encoding="utf-8" ?>
<files>
<file name="TPHP041879.pdf">
<uploadSuccess>1</uploadSuccess>
<filePath>/uploads/2013/09/TPHP0418798.pdf</filePath>
</file>
</files>
ただし、IE8 および 9 では、fileStore_newUpload 要素に含まれるページの HTML の一部を取得します。例えば:
<div id="admin_topBanner">
<span><a href="../index.php">Site Title</a></span>
....
IE9 のデバッグ ツールを使用すると、ネットワーク リクエストのレスポンス ボディに適切なコンテンツが含まれており、リクエストが POST 経由で送信されていることがわかります。(この投稿の結果として確認されました)。また、応答に「Content-Type application/xml; charset=utf-8」が設定されていることもわかります。これは、応答に対して正しいと思われるものです。
私のフォームは次のとおりです。
<form id="fileStore_newUpload" action="<?php echo $portalOptions['site_url']; ?>/ajax/fileUpload.php" enctype="multipart/form-data" method="POST">
<label>File</label><br /><input type="file" name="fileDocument"><br />
<button type="submit" form="fileStore_newUpload">Upload File</button>
</form>
この問題はhttp://bugs.jquery.com/ticket/13388の結果である可能性があると思いましたが、Jquery 1.9.0、1.9.1、および 1.10.2 でテストしたところ、すべてのバージョンで問題が発生することがわかりました.
これはここで提起された問題と同じだと思いますが、よくわかりません: https://stackoverflow.com/questions/17473719/jquery-form-plugin-the-server-generates-correct-json-response -but-ie-receives
任意の支援をいただければ幸いです。