Foros del Web » Programando para Internet » Jquery »

$post jquery

Estas en el tema de $post jquery en el foro de Jquery en Foros del Web. Hola. Estoy intentando hacer un simulador donde, al cambiar los datos de un input, le pase con jquery $.post el valor entrado a un script ...
  #1 (permalink)  
Antiguo 14/07/2016, 05:03
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lugo
Mensajes: 31
Antigüedad: 12 años, 2 meses
Puntos: 0
$post jquery

Hola.
Estoy intentando hacer un simulador donde, al cambiar los datos de un input, le pase con jquery $.post el valor entrado a un script php y este haga unos cálculos y los devuelva para que aparezcan en un tercer input.
Algo así:

<!-- <script>

$(document).ready(function(){

$("#contenedor input").change(function(){
calcula();
});

});

function calcula(){
var datos = $("#formulario").serialize();
var url = "calculos.php";

$.post(url,datos,function(data){
$( "#contenedor" ).html( data );
});
};

</script> -->

No entiendo muy bien la función, sé que lo que salga en calculos.php lo pondrá en el contenedor con id=contenedor.
Yo en realidad lo que quiero es simplemente que al meter cambios en el formulario, automáticamente se haga un recálculo y aparezca en otro input.

No sé si me explicado bien.

Gracias
M.Fernández
  #2 (permalink)  
Antiguo 14/07/2016, 05:27
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 1 mes
Puntos: 48
Información Respuesta: $post jquery

Hola mafersa,

Respondiendo a tu pregunta "No entiendo muy bien la función, sé que lo que salga en calculos.php lo pondrá en el contenedor con id=contenedor"...

Código:
// Cuando el documento este listo (todo los recursos cargados)...
$(document).ready(function(){

    // Capturar los eventos change en todos los elementos #contenedor input
    $("#contenedor input").change(function(){
        // Llamar a la funcion calcula()
        calcula(); 
    });

});

// Definicion de la funcion calcula()
function calcula(){
    // Convierto los elementos del formulario a string para poder ser enviados en una peticion y lo asigno a la variable datos
    var datos = $("#formulario").serialize();
    // Asigno el string calculos.php a la variable url
    var url = "calculos.php";

    // Realizo una peticion Ajax de tipo post a la url "url" enviando los datos contenidos en "datos", y si la peticion fue exitosa llamo a la funcion callback
    $.post(url,datos,function(data){
        // Inserto el contenido de la variable "data" en el elemento con id #contenedor
        $( "#contenedor" ).html( data );
    });
};
Espero que mis comentarios te ayuden a comprender mejor como funciona tu codigo.

En cuanto a tu otra pregunta "Yo en realidad lo que quiero es simplemente que al meter cambios en el formulario, automáticamente se haga un recálculo y aparezca en otro input."...

Para hacer eso no es necesario realizar una peticion Ajax, puedes gestionarlo todo desde Javascript.

Caputras el evento de los inputs, haces los calculos necesarios y el resultado lo asignas al elemento que tu quieras.

Saludos.
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #3 (permalink)  
Antiguo 14/07/2016, 11:01
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lugo
Mensajes: 31
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: $post jquery

Muchas gracias por la respuesta y perdón por duplicar la pregunta. No me había dado cuenta.
El tema es que no me interesa que se sepan las fórmulas que aplico en calculos.php Si las hiciera en javascript se podría copiar el código (entiendo).
Por eso lo que intento es coger los datos de los inputs con javascript y pasarlos a php para poder recalcularlos y ponerlos dinámicamente en las casillas correspondientes.
Lo que estoy intentando hacer es un simulador de costes y por tanto no me interesa que se sepa cómo hago la simulación (estaría en cálculos.php).
He intentado pasar cambiar
function calcula(){
var datos = $("#formulario").serialize();
var url = "simulador.php";

$.post(url,datos,function(data){
$( "#container" ).html( data );
});
};
simulador.php es la propia página y al principio le pongo un include ("calculos.php");.
Lo que me estropea es que coloca toda la página dentro del primer container, lo interesante sería que $.post pasara los datos a simulador.php pero que no fuera necesario colocarlos en un container sino que se recargara la página sin más.

No sé si me explico bien porque no controlo bien javascript
Gracias
  #4 (permalink)  
Antiguo 14/07/2016, 11:05
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 1 mes
Puntos: 48
Mensaje Respuesta: $post jquery

Hola mafersa,

si lo que quieres es recargar la pagina entonces no necesitas Ajax. Envia el formulario por usando un submit normal y ya lo tendrias hecho.

Saludos.
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #5 (permalink)  
Antiguo 14/07/2016, 12:06
 
Fecha de Ingreso: agosto-2015
Ubicación: La Habana
Mensajes: 72
Antigüedad: 9 años, 2 meses
Puntos: 4
Respuesta: $post jquery

Mira primero debes tener en cuenta qué elementos necesitas que cambien cuando haces el cálculo, en dependencia de eso determinas si usar ajax para actualizar lo necesario en la pagina (dejas de cargar imagenes y demas que se repiten) o un simple submit que implicaria cargar con toda la pagina.
  #6 (permalink)  
Antiguo 15/07/2016, 10:59
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lugo
Mensajes: 31
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: $post jquery

En realidad lo que quiero es que al cambiar de input se le pasen los datos a calculos.php (include al principio de la página) y se modifique todo el contenido de los input (que contienen en value el valor recalculado) en función de los cálculos que se hayan hecho. Es lo mismo que haciéndolo con un submit pero utilizando el cambio de botón. Se podría hacer de las dos maneras pero veo más estético no tener que darle al botón de submit.
Es para simular situaciones diferentes.
Al final tendré que acabar haciéndolo con el submit si no lo consigo con jquery.

Gracias por los comentarios.

Etiquetas: Ninguno
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 18:52.