25/02/2011, 14:29
|
| | Fecha de Ingreso: noviembre-2010
Mensajes: 11
Antigüedad: 14 años Puntos: 1 | |
Respuesta: Upload asincrónicamente jquery Aqui esta una posible solucion:
La vista quedaria como lo muestro, hay que notar que incluyo tambien el script que configura la validacion del lado cliente, y las apis que agrego puedes conseguirlas en los sitios respectivos de jquery y los plugins.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ajax Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="js/jquery-1.4.3.min.js" ></script>
<script type="text/javascript" src="js/jquery.validate.min.js" ></script>
<script type="text/javascript" src="js/jquery.form.js" ></script>
<script>
function upload(){
if($("#frmUpload").valid())
$("#frmUpload").ajaxSubmit({
dataType:'xml',
success:function(error){
if($(error).text()=="0")
alert("Extio en Carga");
else
alert("Error en Carga");
},
resetForm:true
});
}
$(document).ready(
function(){
$('#frmUpload').validate(
{
rules:{
archivo:{
required:true
}
},
messages:{
archivo:{
required:'Cargue un archivo'
}
}
});
});
</script>
</head>
<body>
<form name="frmUpload" id="frmUpload" method="post" enctype="multipart/form-data" action="upload.php" >
<table>
<tr>
<td><label for="archivo">Archivo:</label></td>
<td><input type="file" id="archivo" name="archivo" value="" /></td>
</tr>
<tr>
<td></td>
<td><input type="button" id="btnUpload" name="btnUpload" value="Guardar" onclick="upload();" /></td>
</tr>
</table>
</form>
</body>
</html>
El script de carga de archivos puede ser de la forma tradicional con la excepcion de que debemos considerar que debe enviar la respuesta al script de envio asincrono
<?php
function upload($inputName){
if(isset($_FILES[$inputName]))
$target_path = getcwd().DIRECTORY_SEPARATOR."files\\".$_FILES[$inputName]['name'];
else
return false;
if(move_uploaded_file($_FILES[$inputName]['tmp_name'], $target_path))
return true;
else
if($_FILES[$inputName]['error']==0)
return true;
return false;
}
$result = upload("archivo");
echo $result?"0":"1";
?>
Y he aqui una solucion simple al tu problema =) |