1
下記のようにjquery(フォームプラグイン)アップロードルーチンを "live'ify"できますか?jqueryフォームプラグインアップロードを使用すると再送信が発生しません
最初のクリックでアップロードされ、期待どおりに更新されますが、ユーザーは2番目のファイルをアップロードすることはできません。javascriptを起動していないようですので、このプラグインを使用していくつかの.live解決していない:
jQueryのフォームプラグインを使用しています。
$(document).ready(function() {
var options = {target: '#uploads_panel',
data:
{ upload_ajax_on:'1',
upload:'1'
}
};
$('#upload-form').submit(function() {
$(this).ajaxSubmit(options);
return false;
});
});
形式は次のようになります。
<div id='uploads_panel'> <!-- for ajax refresh -->
//table containing existing file list
<form action="/file/upload" method="post" id="upload-form" enctype="multipart/form-data">
<p>File<br />
<input type="file" name="userfile" id="userfile" /></p>
<p><input type="submit" value="Submit" /></p>
</form>
</div>
とコントローラは次のようになります。
public function uploadAction()
{
//fetch variables etc
if(isset($_POST['upload']))
{
$data=array();
$data[name] = $_FILES['userfile']['name'];
$data[internal_name] = date("Y-m-d-h-m-s",time()).$data[name];
$data[type] = $_FILES['userfile']['type'];
$data[size] = $_FILES['userfile']['size'];
$data[path] = 'uploads/'. $_SESSION['customer_id'] . "/".$data[internal_name];
$data[upload_time] = time();
$data[user_id] = $_SESSION['user_id'];
$data[customer_id] = $_SESSION['customer_id'];
$tmpName = $_FILES['userfile']['tmp_name'];
$testervar=$uploadDir.$data[internal_name];
$result = move_uploaded_file($tmpName, $uploadDir.$data[internal_name]);
if (!$result)
{
echo "Error uploading file";
die;
}
$db = new DBitems();
// $last_id=$db->uploadFile($data);
}
$upload_ajax_on=$_POST['upload_ajax_on'];
$dbitems = new DBitems();
$filelist=$dbitems->selectFilesByCustomerId($_SESSION['customer_id']);
$this->registry->template->filelist =$filelist;
if(isset($upload_ajax_on))
{
$this->registry->template->setView('masterpage','layouts:ajax');
$this->registry->template->setView('contents','customers:table_upload');
}
else
{
$returnurl=$_POST['returnurl'];
$this->registry->router->redirect($returnurl);
}
}
とまったく同じです。本当にありがとう! –
probはありません、それは物事をソートしてうれしいです。 –