Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] enviar dos data en javascript

Estas en el tema de enviar dos data en javascript en el foro de Jquery en Foros del Web. Buenas a todos. Vengo el día de hoy a pedirles ayuda ya que no es la primera vez que lo hago y siempre me han ...
  #1 (permalink)  
Antiguo 11/12/2015, 17:51
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
enviar dos data en javascript

Buenas a todos.

Vengo el día de hoy a pedirles ayuda ya que no es la primera vez que lo hago y siempre me han librado de más de un problema.

Tengo un problema, estoy haciendo un filtro múltiple de php pero tengo como intermediario un .js para enviar los datos de un php a otro php.

mi primer php es lo siguiente:

Código HTML:
Ver original
  1. <input type="text" placeholder="Busca un producto por: Nombre o Tipo" id="bs-prod"/>


Código PHP:
  $consulta=mysql_query("select remolque_id, alias from remolque order by remolque_id ASC");
        echo 
"<select name='bus' id='bus'>";
        echo 
"<option value=''>Seleccionar Cliente </option>";
        while (
$fila=mysql_fetch_array($consulta)){
            echo 
"<option value='".$fila[0]."'>".utf8_encode($fila[1])."</option>";
        }
        echo 
"</select>"
De ahí escojo una opción y la envío al javascript:


Código Javascript:
Ver original
  1. $('#bs-prod').on('keyup',function(){
  2.         var dato = $('#bs-prod').val();
  3.         var url = 'php/busca_producto.php';
  4.         $.ajax({
  5.         type:'POST',
  6.         url:url,
  7.         data:'dato='+dato,
  8.         success: function(datos){
  9.             $('#agrega-registros').html(datos);
  10.         }
  11.     });
  12.     return false;
  13.     });
  14.    
  15.         $('#bus').on('change',function(){
  16.         var dat = $('#bus').val();
  17.         var url = 'php/busca_producto.php';
  18.         $.ajax({
  19.         type:'POST',
  20.         url:url,
  21.         data:'dat='+dat,
  22.         success: function(datos){
  23.             $('#agrega-registros').html(datos);
  24.         }
  25.     });
  26.     return false;
  27.     });

De ahí se envía al php que recibe las variables 'dato' y 'dat' pero no me filtra como quiero. Entonces lo que necesito es que en vez de que el javascript este separado en dos envíe solo una y mi plan es juntar "data:'dato='+dato" y "data:'dat='+dat" pero no se como hacerlo para que se envíe una sola funcion al segundo php.

Gracias por su atención
  #2 (permalink)  
Antiguo 11/12/2015, 19:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: enviar dos data en javascript

De plano te digo que cada vez que tengas scripts muy similares o iguales, crees una función que abstraiga las funcionalidades que tengan en común de tal forma que puedes reutilizar la función cuantas veces quieras. En este caso, la función tendría dos partes; la primera consistirá en la toma de los valores de ambos elementos, mientras que la segunda parte será la ejecución del método $.ajax(). Para enviar dos o más valores, puedes concatenarlos en la misma cadena de consulta:
Código Javascript:
Ver original
  1. data: "variable1=" + valor1 + "&variable2=" + valor2

O en un objeto literal:
Código Javascript:
Ver original
  1. data: {
  2.     variable1: valor1,
  3.     variable2: valor2
  4. }

Un saludo
__________________
«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
  #3 (permalink)  
Antiguo 12/12/2015, 09:58
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: enviar dos data en javascript

Buenas Alexis88.

En efecto hizo lo esperado, pero ahora tengo otro problema. Lo que pasa es que es un filtro en vivo lo que estoy haciendo y al momento en que la lista desplegable selecciono un valor no se actualiza el datagrid, sólo lo hace cuando uso el input.

El javascript es este:

Código Javascript:
Ver original
  1. $('#bs-prod').on('keyup',function(){
  2.         var dato = $('#bs-prod').val();
  3.         var dat = $('#bus').val();
  4.         var url = 'php/busca_producto.php';
  5.         $.ajax({
  6.         type:'POST',
  7.         url:url,
  8.     data: "dato=" + dato + "&dat=" + dat,
  9.         success: function(datos){
  10.             $('#agrega-registros').html(datos);
  11.         }
  12.     });
  13.     return false;
  14.     });

Como ves hice lo que me dijiste

Pero tengo un problema y es con esta parte

Código Javascript:
Ver original
  1. $('#bs-prod').on('keyup',function(){

Necesito meter también

Código Javascript:
Ver original
  1. $('#bus').on('change',function(){

Pues el input funciona con keyup y el select funciona con change, entonces como puedo mezlcar esas dos partes.

PD: soy malo con javascript
  #4 (permalink)  
Antiguo 12/12/2015, 10:50
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: enviar dos data en javascript

Buenas.

Para comentarte que pude lograr lo que queria haciendo lo siguiente:

Código Javascript:
Ver original
  1. $('#input-cliente').on('keyup',function(){
  2.         var dato = $('#input-cliente').val();
  3.         var dat = $('#remolque').val();
  4.         var url = 'php/busca_producto.php';
  5.         $.ajax({
  6.         type:'POST',
  7.         url:url,
  8.     data: "dato=" + dato + "&dat=" + dat,
  9.         success: function(datos){
  10.             $('#agrega-registros').html(datos);
  11.         }
  12.     });
  13.     return false;
  14.     });
  15.    
  16.         $('#remolque').on('change',function(){
  17.         var dato = $('#input-cliente').val();
  18.         var dat = $('#remolque').val();
  19.         var url = 'php/busca_producto.php';
  20.         $.ajax({
  21.         type:'POST',
  22.         url:url,
  23.     data: "dato=" + dato + "&dat=" + dat,
  24.         success: function(datos){
  25.             $('#agrega-registros').html(datos);
  26.         }
  27.     });
  28.     return false;
  29.     });

El problema es que no se me hace muy profesional

Sabe alguien como simplificar lo anterior a algo con menos codigo?

Gracias
  #5 (permalink)  
Antiguo 12/12/2015, 11:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: enviar dos data en javascript

Cita:
Iniciado por planmental Ver Mensaje
Sabe alguien como simplificar lo anterior a algo con menos codigo?
Cita:
Iniciado por Alexis88 Ver Mensaje
De plano te digo que cada vez que tengas scripts muy similares o iguales, crees una función que abstraiga las funcionalidades que tengan en común de tal forma que puedes reutilizar la función cuantas veces quieras.
Para que quede más claro:
Código Javascript:
Ver original
  1. function ejemplo(){
  2.     //Instrucciones en común
  3. }
  4.  
  5. $("elementoX").on("evento", ejemplo);
  6. $("elementoY").on("otro evento", ejemplo);

Por cierto, ¿por qué pusiste ese return false?
__________________
«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 12/12/2015, 12:37
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: enviar dos data en javascript

Hola Alexis88.

Me ha venido de maravilla tu ayuda pues me has resuelto el problema


Con respecto al return false es que también estoy realizando unos js para insertar y actualizar datos en mysql y sólo copie y pegué y como no afectaban los dejé ahí

Y pues muchas gracias me ha servido tu ayuda y aquí el js final por si a alguien le sirve:

Código Javascript:
Ver original
  1. function filtro(){
  2.     var dato = $('#input-cliente').val();
  3.         var dat = $('#remolque').val();
  4.         var url = 'php/busca_producto.php';
  5.         $.ajax({
  6.         type:'POST',
  7.         url:url,
  8.     data: "dato=" + dato + "&dat=" + dat,
  9.         success: function(datos){
  10.             $('#agrega-registros').html(datos);
  11.         }
  12.     });
  13. }
  14.     $("#input-cliente").on("keyup", filtro);
  15. $("#remolque").on("change", filtro);

Saludos

Etiquetas: data, javascript, javascript+html, juntar
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 02:06.