非表示の iframe を使用して AJAX スタイルのファイルをアップロードする方法について簡単に説明する必要がありました。フォームに関連する HTML コードの一部を次に示します。
<div id = "file" class = "info">
<form id="file_upload_form" method="post" enctype="multipart/form-data" action='script/uploadScript'>
<input name="file" id="file" size="27" type="file" /><br />
<input id = "uploadSubmit" type="submit" name="action" value="Upload" />
<iframe id="upload_target" name="upload_target" src="" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>
</div>
関連するPHPは次のとおりです。
public function uploadScript(){
$returnVals = array();
if ($_FILES["file"]["error"] > 0){
$returnVals['error'] = "Error: " . $_FILES["file"]["error"] . "<br />";
}else{
if ($_FILES["file"]["type"] != "text/plain"){
$returnVals['error'] = "Badtype";
}else{
$returnVals['text'] = file_get_contents($_FILES["file"]["tmp_name"]);
}
}
echo json_encode($returnVals);
}
基本的に、PHP はファイルを取得し、それがテキスト ファイルかどうかをチェックします。次に、返されたjsonにjavascript内でアクセスしたいと思います。そこで迷ってしまう…
$("#file_upload_form").submit(function() {
$("#file_upload_form").target = "upload_target";
$("#upload_target").onload = uploadDone();
});
理想的には、アップロードが完了して iframe がロードされたら、これを呼び出す必要があります
function uploadDone() {
alert($("#upload_target").contents().find("body").text());
}
しかし、それは常に空白です。基本的に、returnVals は iframe 本体に配置されますが、アラートの後に配置されるため、アラートには何も含まれません。では、この小さな欠陥を修正する方法はありますか?
これを行う方法についてより良い説明はありますか?私は一日中、さまざまなサンプルコードなどで頭を悩ませてきましたが、運がありません:/
私は基本的に、php コードを介して返されたテキストを警告できるようにしたいと考えています。ところで、私はIE7とその後のすべてのブラウザで動作できるようにしたいので、このようにしています。
助けていただければ幸いです。時間をありがとう!