Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Problema con javascript en php y ajax

Estas en el tema de Problema con javascript en php y ajax en el foro de Jquery en Foros del Web. Hola foro soy nuevo. Tengo un problema intento arreglar un codigo php para subir archivos que utiliza ajax este es el codigo original Código PHP: ...
  #1 (permalink)  
Antiguo 07/01/2015, 23:09
 
Fecha de Ingreso: enero-2015
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 0
Problema con javascript en php y ajax

Hola foro soy nuevo. Tengo un problema intento arreglar un codigo php para subir archivos que utiliza ajax
este es el codigo original

Código PHP:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>HI.</title>
<title>Documento sin t&iacute;tulo</title>
<link rel="stylesheet" type="text/css" href="css/uploadify.css">
<script language="javascript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script language="javascript" type="text/javascript" src="js/swfobject.js"></script>
<script language="javascript" type="text/javascript" src="js/jquery.uploadify.v2.1.0.min.js"></script>
<script type="text/javascript">
$(function() {
    $('#inputArchivo').uploadify({
        'uploader': 'swf/uploadify.swf',
        'script': 'uploadify.php',
        'queueID': 'listaArchivos',
        'buttonText': 'Examinar',
        'wmode': 'transparent',
        'auto': true,
        'fileExt': '*.jpg;*.gif;*.png',
        'multi': true,
        'cancelImg': 'cancel.png',
        'folder': "upload/<?php echo $_POST['user'];?>/<?php echo $_POST['anime'];?>",
        onComplete : function(file, data, response){
        $.post("upload.php?user=<?php echo $_POST['user'];?>&anime=<?php echo $_POST['anime'];?>",{file:data.filesUploaded},function(respuesta){
           alert(data.filesUploaded + ' archivos subidos correctamente');  //Mostramos un alert del resultado devuelto por el php
});        
            
        }
    });
});
</script>
<style type="text/css">

body {
background:#FFFFFF;
font: bold 13px/1.5 'Helvetica Neue', Arial, 'Liberation Sans', FreeSans, sans-serif;
margin:0px;
padding:0px;
}

h1 {
font-size:16px;
}

h4 {
font-size:12px;
}


#listaArchivos {
width: 400px;
height: 300px;
overflow: auto;
border: 1px solid #E5E5E5;
margin-bottom: 10px;
}

a.linkCancelar {
color:#EEEEEE;
background:#454545 url(imagenes/Delete.gif) no-repeat 2px;
padding:5px 14px 5px 24px;
margin-right:10px;
float:left;
text-decoration:none;
font:12px/20px Tahoma, Verdana, Arial, Helvetica, sans-serif !important;
-moz-border-radius: 2px; /* S?lo Firefox */
}

a.linkCancelar:hover {
background:#5E5D5E url(imagenes/Delete.gif) no-repeat 2px;
}
</style>
</head>

<body>
    <h1>Subir Anime</h1>
    <p>
  <?php
   $user 
$_POST['user'];
$anime $_POST['anime'];
$rutauser 'upload/'.$user.'/';
$ruta 'upload/'.$user.'/'.$anime.'/';
if (
$user == "" && $anime == "")
{
}
else
{
if(!
file_exists($rutauser))
{
    echo 
"Se creo un nuevo Directorio!";
mkdir($rutauser0777);
}
if(!
file_exists($ruta))
{
    echo 
" Se creo un nuevo SubDirectorio!";
mkdir($ruta0777);

?>
  <br />
    </p>
<div id="listaArchivos" class="listaArchivos"></div>
    <input name="inputArchivo" type="file" id="inputArchivo" />
    <a href="javascript:jQuery('#inputArchivo').uploadifyClearQueue()" class="linkCancelar">Cancelar todo</a>
</body>
</html>

veran en el mensaje alert quiero obtener el nombre del archivo que se subio no la cantidad pero e intentado innumerables cosas y no sirve :(

el codigo se conecta a estos codigos de java

Código Java:
Ver original
  1. f(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('<div id="'+a(this).attr("id")+'Uploader"></div>');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('<div id="'+a(this).attr("id")+'Queue" class="uploadifyQueue"></div>')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('<div id="'+a(this).attr("id")+h+'" class="uploadifyQueueItem"><div class="cancel"><a href="javascript:jQuery(\'#'+a(this).attr("id")+"').uploadifyCancel('"+h+'\')"><img src="'+settings.cancelImg+'" border="0" /></a></div><span class="fileName">'+fileName+" ("+k+l+')</span><span class="percentage"></span><div class="uploadifyProgress"><div id="'+a(this).attr("id")+h+'ProgressBar" class="uploadifyProgressBar"><!--Progress Bar--></div></div></div>')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full.  The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d<b.length;d++){var h=b[d].split("=");e[h[0]]=h[1]}g=e}return g}},uploadifyUpload:function(b){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").startFileUpload(b,false)})},uploadifyCancel:function(b){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").cancelFileUpload(b,true,false)})},uploadifyClearQueue:function(){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").clearFileUploadQueue(false)})}})})(jQuery)};


y a otros php pero no hacen la gran cosa solo le mandan la informacion a el js.
no se como obtener el filename ayuda!!.
  #2 (permalink)  
Antiguo 07/01/2015, 23:33
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años
Puntos: 122
Respuesta: Problema con javascript en php y ajax

El último código que pusiste es Javascript, no Java. Lo que recibes en data es lo que devuelve uploadify.php que por defecto me parece que es 1 o Invalid file type. Necesitarías agregar código ahí para devolver en JSON los valores que necesitas.
  #3 (permalink)  
Antiguo 08/01/2015, 00:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 21 años, 11 meses
Puntos: 1284
Respuesta: Problema con javascript en php y ajax

Hola:

Si quieres no depender de la librería, y de unos k's de datos que no son necesarios para lo que quieres... te paso uno de mis apuntes: Subir archivos con Ajax, pero el caso es el mismo, puedes hacer tu propio fichero php con un simple move_uploaded_file y el retorno que tu quieras...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 08/01/2015, 03:21
 
Fecha de Ingreso: enero-2015
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Problema con javascript en php y ajax

Cita:
Iniciado por dual3nigma Ver Mensaje
El último código que pusiste es Javascript, no Java. Lo que recibes en data es lo que devuelve uploadify.php que por defecto me parece que es 1 o Invalid file type. Necesitarías agregar código ahí para devolver en JSON los valores que necesitas.
y como hago para devolver el nombre porque
actualmente solo se que devuelve los archivos que se subieron

Código Javascript:
Ver original
  1. data.filesUploaded

quiero obtener el nombre del archivo pero no se donde agregar esa variable es mas nunca encontre el filesUploaded en el js ni en el uploadify.php donde se agrega esta variable???

este es el uploadify.php por si acaso

Código PHP:
Ver original
  1. <?php
  2. if (!empty($_FILES)) {
  3.     $tempFile = $_FILES['Filedata']['tmp_name'];
  4.     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
  5.     $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
  6.    
  7.     // $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
  8.     // $fileTypes  = str_replace(';','|',$fileTypes);
  9.     // $typesArray = split('\|',$fileTypes);
  10.     // $fileParts  = pathinfo($_FILES['Filedata']['name']);
  11.    
  12.     // if (in_array($fileParts['extension'],$typesArray)) {
  13.         // Uncomment the following line if you want to make the directory if it doesn't exist
  14.         //mkdir(str_replace('//','/',$targetPath), 0755, true);
  15.        
  16.         move_uploaded_file($tempFile,$targetFile);
  17.         echo "1";
  18.     // } else {
  19.     //  echo 'Invalid file type.';
  20.     // }
  21. }
  22. ?>
  #5 (permalink)  
Antiguo 08/01/2015, 10:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con javascript en php y ajax

Tan solo te hace falta imprimir o $targetFile para obtener el nombre del archivo y la ruta en donde se guardó o $_FILES['Filedata']['name'] para obtener solo el nombre del archivo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 08/01/2015, 13:19
 
Fecha de Ingreso: enero-2015
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Problema con javascript en php y ajax

Cita:
Iniciado por Alexis88 Ver Mensaje
Tan solo te hace falta imprimir o $targetFile para obtener el nombre del archivo y la ruta en donde se guardó o $_FILES['Filedata']['name'] para obtener solo el nombre del archivo.

Saludos
No puedo agregar el codigo php en el .post no me muesetra nada.. necesito es el codigo ajax cuando agrego el codigo php queda asi mira

Código Javascript:
Ver original
  1. $.post("upload.php?user=<?php echo $_POST['user'];?>&anime=<?php echo $_POST['anime'];?>",{filex:<?php echo $_FILES['Filedata']['name'] ?>},function(respuesta){
  2.            alert(<?php echo $_FILES['Filedata']['name'] ?>);  //Mostramos un alert del resultado devuelto por el php
  3. });

y sigue sin mostrar nada no muestra el nombre :( solo quiero la variable del nombre

Saludos.
  #7 (permalink)  
Antiguo 08/01/2015, 14:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con javascript en php y ajax



Lo que te dije es que debes de imprimir eso en el archivo PHP. Esa es la respuesta que devuelve el servidor. Si necesariamente tienes que devolver el '1', entonces podrías devolver un array parseado a JSON:

Código PHP:
Ver original
  1. echo json_encode(array('estado' => 1, 'nombre' => $_FILES['Filedata']['name']));

Código Javascript:
Ver original
  1. $.post("upload.php?user=<?php echo $_POST['user'];?>&anime=<?php echo $_POST['anime'];?>", {file:data.filesUploaded}, function(respuesta){
  2.     if (respuesta.estado == 1){
  3.         alert("Nombre del archivo: " + respuesta.nombre);
  4.     }
  5. }, "json");

P.D.: Tienes que estudiar más.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 08/01/2015, 15:11
 
Fecha de Ingreso: enero-2015
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Problema con javascript en php y ajax

Cita:
Iniciado por Alexis88 Ver Mensaje


Lo que te dije es que debes de imprimir eso en el archivo PHP. Esa es la respuesta que devuelve el servidor. Si necesariamente tienes que devolver el '1', entonces podrías devolver un array parseado a JSON:

Código PHP:
Ver original
  1. echo json_encode(array('estado' => 1, 'nombre' => $_FILES['Filedata']['name']));

Código Javascript:
Ver original
  1. $.post("upload.php?user=<?php echo $_POST['user'];?>&anime=<?php echo $_POST['anime'];?>", {file:data.filesUploaded}, function(respuesta){
  2.     if (respuesta.estado == 1){
  3.         alert("Nombre del archivo: " + respuesta.nombre);
  4.     }
  5. }, "json");

P.D.: Tienes que estudiar más.

Saludos

sigue sin funcionar agrego el codigo en el php uploadify.php y luego en el index.php y igual no funciona no me manda el dato ademas creo que te confundiste el post es para mandar las variables obtenidas a un php que luego las insertara en una base de datos

upload.php no es uploadify.php que es el que subi anteriormente

PD: No estudio todavia ni siquiera e visto ninguna clase de javascript en mi vida
  #9 (permalink)  
Antiguo 08/01/2015, 21:45
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con javascript en php y ajax

Solamente tomé el código que vi. Eso es lo que pasa cuando muestras todo el código en lugar de mostrar solo la parte crítica. De cualquier manera, si adaptas eso, deberías de obtener el resultado esperado. Si no lo obtienes, es porque estás haciendo algo mal.

¿Podrías mostrarnos el código actualizado?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 09/01/2015, 02:04
 
Fecha de Ingreso: enero-2015
Mensajes: 6
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Problema con javascript en php y ajax

Cita:
Iniciado por Alexis88 Ver Mensaje
Solamente tomé el código que vi. Eso es lo que pasa cuando muestras todo el código en lugar de mostrar solo la parte crítica. De cualquier manera, si adaptas eso, deberías de obtener el resultado esperado. Si no lo obtienes, es porque estás haciendo algo mal.

¿Podrías mostrarnos el código actualizado?
ya lo resolvi era file.name una variable del js pero solo se podia obtener si estaba en la funcion OnComplete. Gracias.

Etiquetas: ajax, code, javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:19.