2

次のようにHTMLでフォームを明示的に書き出す場合:

 <form action='upload_1-img.php' enctype='multipart/form-data' method='post'>
   <input type='file' id='image' name='image'><input type='submit'>
 </form>

その後、すべてがIEで期待どおりに実行されます。しかし、次のことを行うと、ChromeとFFでは機能しますが、IE8では機能しません。

<html>
<head>
<script>
$(document).ready(function(){

    imgform = document.createElement('form');
    imgform.id = 'imgform';
    imgform.method='post';
    imgform.enctype='multipart/form-data';
    imgform.action ='upload_1-img.php';
    $('body').append(imgform);
    $('#imgform').append("<input type='file' id='image' name='image' /><input type=submit>");
});
</script>
</head>
<body>
</body>
</html>

この場合、で使用するvar_dump($_FILES)upload_1-img.php、空の配列が返されます。IE8は、この同じフォームがHTMLで明示的にコーディングされている場合、通常どおりファイルをアップロードします。しかし、フォームがjavascriptで動的に作成された後、ファイルのアップロードが機能する必要があります。IE8でこれを機能させるための回避策は何ですか?

4

1 に答える 1

1

次のようにしてみてください。

var form=document.createElement("<form id='imgform' action='upload_1-img.php' enctype='multipart/form-data' method='post'>");
$('body').append(form);
$('#imgform').append("<input type='file' id='image' name='image' /><input type=submit>");

ソース: http://verens.com/2005/07/06/ie-bugs-dynamically-creating-form-elements/

記事の下部を確認すると、

上記のコードは、実際にマルチパートの側面を使用する必要がある場合 (ファイルのアップロードなど) を除いて、ほとんどの場合 IE で動作します。

この場合、IE は次のくだらないコードを要求しているようです。

form=document.createElement('<form action="shoppingcart_xhr.php" method="POST" > enctype="multipart/form-data" target="shoppingcart_iframe">');

于 2013-02-15T13:26:40.360 に答える