Pregunta:
Fecha: 26-01-2018 06:36:24
(En Español)
Estoy haciendo un sitio web con php con la estructura mvc utilizando namespace. Quiero hacer un Login en un popUp o Modal, (como lo llamen) entonces no puede ser posible que me recargue la pagina al enviar los datos al controlador. Quiero enviar esos datos atravez de ajax para que así no me cierre el popUp. Pero le intentado diferentes formas y no funciona. Por ultimo he intentando con XMLHttpRequest. Y al enviar los datos el responseText me trae los datos que he acabado de envian cuando en el controlador lo que deberia de hacer al recibir los datos es ejecutar un var_dump() y luego un exit(). Lo que quiere decir que no esta recibiendo los datos que el XMLHttpRequest me dice que si envió.
este es el codigo JavaScript que estoy usando
Gracias de antemano Votos: 0 - Respuestas: 8 - Vistas: 24 Compartir en: Google Facebook Twitter LinkedIn Link
Enviar datos al controlador con Ajax[Resuelta]
Buenos días.Estoy haciendo un sitio web con php con la estructura mvc utilizando namespace. Quiero hacer un Login en un popUp o Modal, (como lo llamen) entonces no puede ser posible que me recargue la pagina al enviar los datos al controlador. Quiero enviar esos datos atravez de ajax para que así no me cierre el popUp. Pero le intentado diferentes formas y no funciona. Por ultimo he intentando con XMLHttpRequest. Y al enviar los datos el responseText me trae los datos que he acabado de envian cuando en el controlador lo que deberia de hacer al recibir los datos es ejecutar un var_dump() y luego un exit(). Lo que quiere decir que no esta recibiendo los datos que el XMLHttpRequest me dice que si envió.
este es el codigo JavaScript que estoy usando
function goInsert(){
var url = $('#url').val();
var explicacion = $('#explicacion').val();
var form = 'url='+url+'&explicacion='+explicacion;
var connect = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
connect.onreadystatechange = function(){
if(connect.readyState == 4 && connect.status == 200){
if(connect.responseText == 1){
var result = '<div class="alert alert-success">';
result += '<span>Conectando...';
result += '<strong> Estamos guardando...</strong></span>';
result += '</div>';
$('#_AJAX_LOGIN_').innerHTML = result;
location.reload();
}else{
alert(connect.responseText);
$("#_AJAX_LOGIN_").innerHTML = connect.responseText;
}
}else if(connect.readyState != 4){
var result = '<div class="alert alert-warning">';
result += '<span>Procesando...';
result += '<strong>Espere por favor...</strong></span>';
result += '</div>';
$("#_AJAX_LOGIN_").innerHTML = result;
}
}
connect.open("POST","http://10.69.38.43/frameworkBK/public/home/index/",true);
connect.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
connect.send(form);
}
function runScript(e){
if(e.keyCode == 13){
goInsert();
}
}
Gracias de antemano Votos: 0 - Respuestas: 8 - Vistas: 24 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 01-02-2018 05:39:04 hola podrias mostrar como estas resiviedo los datos en php, para enviar las variables desde javascript te recomentod que uses fromdata
var data = new FormData(); data.append("url", url); data.append("explicacion",explicacion ); connect.send(data);Votos: 0 - Link respuesta -
Fecha: 01-02-2018 06:05:41 Hola Andy.
El problema es que no me envia la variable post. Sino que solo va al controlador y lo ejecuta. Y me trae en el div todo lo que el controlador renderiza. Es decir, la misma vista me la pone en el div. Votos: 0 - Link respuesta -
Fecha: 01-02-2018 06:59:31 yo tengo algo con ese sistema de envio nativo de javascript
var json= '{ "key" : "value", "key1" : "value1", "key2" : "value2" }' var request = new XMLHttpRequest(); request.open( "POST", ajax_url, true ); request.setRequestHeader("Content-Type", "application/json; charset=UTF-8"); request.send( myjson );
y del lado de php rsivo los datos de la siguiente forma
$data = file_get_contents('php://input'); $data = json_decode( $data, true ); $response = array(); if($data['key'] == "value"){ ...... } die($response );
puede que este mandando tu solicitud pero no lo esta procesando como es ya que no toma datos Votos: 0 - Link respuesta -
Fecha: 02-02-2018 03:34:14 hola viejo como vas, por que no usas el metdo de ajax que trae jquery por defecto.
$.ajax({ method: "POST", // metodo de envio url: "some.php", // la ruta del controlador data: { // datos que se van a enviar nombre: $('#nombre').val(), // te llega en post nombre y correo correo: $('#correo').val() // toma los input con Id nombre y correo } }) .done(function( msg ) { // msg es la respuesta del servidor alert( "Data Saved: " + msg ); // poder mostrar una alerta $('#msg-login).html(msg); // esto cargaria la respuesta en un elemento con Id msg-login y puede cotener html (imagenes, divs, javascript, etc ). });
con validaciones desde el controlador podes llamar a todos los mensjaes de cada condicional simplemente con un echo. Votos: 0 - Link respuesta -
Fecha: 12-02-2018 06:52:14 Hola Andy.
Aun no llega nada al controllador. Ni siquiera encuentra el controllador. Votos: 0 - Link respuesta -
Fecha: 12-02-2018 06:52:53 Hola Andres.
Ya habia intentado usar ajax normalmente pero igual tampoco funciona. Votos: 0 - Link respuesta -
Fecha: 12-02-2018 07:49:58 Intentaste ver con firebug, (yo uso el que tiene por defecto Firefox), que parámetros envía, si la url está bien, y no envía error 500, si el div de renderizando lo estas llamando correctamente, si esta cargando la librería de jquery, si el modal esta bloqueado la función del ajax. ... Lo que generalmente hago es mandar un simple echo. Después comprobar con el mismo ajax, envío una variable plana, tipo
data: { nombre: 'prueba de envio' }
Luego imprimo el post de nombre.
Intenta enviarlo fuera del modal y luego dentro, alguna vez me paso que el modal que cargaba en ajax el contenido, no funcionaban las variables que se habían creado anteriormente, ya que como es nuevo código renderizando no tomaba las funciones anteriores..
Espero que estos tips de depuración te sirvan. Votos: 0 - Link respuesta -
Fecha: 13-02-2018 04:15:33 Hola. Ya lo resolví. Sucede que el ajax estaba funcionando bien, solo que yo queria que me imprimiera desde el controlador lo que le estaba mandando. Pero esto no era posible porque el ajax traía eso que queria imprimir desde el controllador. Igual muchas gracias por su ayuda. Aprendi algunas cosas que pueden servir en el futuro. Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
