iframe を使用する ajax 画像アップロード機能を実装しています。SOを検索して同様の質問を見つけましたが、試してみましたが、うまくいきませんでした。私のajax画像のアップロードは次のように機能します:
- ユーザーが [画像を追加] ボタンをクリックすると、新しいダイアログ ボックスが動的に作成されます
$('#imgdialog')
。$('#imgform')
このダイアログ ボックスは、動的に作成されたフォームと iframeを含む単なる div です$('#upload_target')
。 - このフォームにより、ユーザーはajax uplaod を介して iframe に表示されるファイルを選択できます。
しかし、これは起こりません。私はこのチュートリアルに従っています: http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html
私の実装とチュートリアルの実装の主な違いは、私の実装では、フォームと iframe は、ページが読み込まれたときに最初から存在せず、ユーザーがボタンをクリックしたときにその場で作成されることです。
FireBug を使用すると、必要な POST と RESPONSE が表示されるため、PHP コードが正常に動作していることはわかっています。しかし、Iframe は読み込まれませんが、FireBug では、空であることを除いて、HTML に存在することがわかります。
動的フォームと iframe を作成するコードは次のとおりです。
imgform = document.createElement('form');
imgform.id = 'imgform';
imgform.method='post';
imgform.enctype='multipart/form-data';
imgform.action ='upload_1.php';
imgform.target = 'upload_target';
imgform.onsubmit='showUploadedItem();';
$('#imgform').append("Select image:<br /><input type='file' id='imgfile' />");
$('#imgdialog').append("<iframe id='upload_target' name='upload_target' style='border:1px solid gray;' src='#'></iframe>");
$('#upload_target').bind('load', function() { // doesn't work with .live either
$(this).contents().find("body").html('greetings from the iframe !');
alert("loaded");
});
のonSubmit$('#imgform')
関数には、次の行も含めます。
if($('#upload_target').length > 0){ alert("it's there"); } else {alert ("not there"); }
そして、私は「そこにいない」を得ました。
どうすれば iframe にアクセスできますか?