Foros del Web » Programando para Internet » Jquery »

Respuesta desde php a json

Estas en el tema de Respuesta desde php a json en el foro de Jquery en Foros del Web. Buenos días, estoy realizando un formulario estilo popup. El envío de variables lo hago con ajax y todo funciona perfecto, el problema aparece cuando quiero ...
  #1 (permalink)  
Antiguo 10/02/2014, 07:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 73
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta desde php a json

Buenos días, estoy realizando un formulario estilo popup. El envío de variables lo hago con ajax y todo funciona perfecto, el problema aparece cuando quiero obtener la respuesta desde php para poder mostrar el mensaje correspondien.

El código usado es:

Código HTML:
$(function(){
		  //creación de ventana formulario
		  $('#form').dialog({
			  autoOpen:false,
			  modal:true,
			  width:500,
			height:'auto',
			resizable: false,
			close:function(){
				$('#formRegistro fieldset > span').removeClass('error').empty();
				$('#formRegistro input[type="text"]').val('');
		    	$('#formRegistro select > option').removeAttr('selected');
			}
		});
		// funcionalidad del botón que abre el formulario
		$('#irNuevaTarea').on('click',function(){
			// Asignamos valor a la variable acción
			$('#nuevo').val('nuevaTarea');

			// Abrimos el Formulario
			$('#form').dialog({
				title:'Nueva Tarea',
				autoOpen:true
			});
		});
		  
	// Validar Formulario
		$('#formTarea').validate({
		    submitHandler: function(){
		        
		        var str = $('#formTarea').serialize();

		        // alert(str);
				
		        $.ajax({
		            beforeSend: function(){
		                $('#formTarea .ajaxLoader').show();
		            },
		            cache: false,
		            type: "POST",
		            dataType: "json",
		            url:"../include/datos.php?nuevo=nuevaTarea",
		            data:str,
		            success: function(response){
							 
		            	// Validar mensaje de error
		            	if(response.respuesta == false){
		            		alert(response.mensaje);
		            	}
		            	else{

		            		// si es exitosa la operación
		                	$('#form').dialog('close');
						}

		            	$('#form .ajaxLoader').hide();

		            },
		            error:function(){
		                alert('ERROR GENERAL DEL SISTEMA, INTENTE MAS TARDE');
		            }
		        });

		        return false;

		    },
		    errorPlacement: function(error, element) {
		        error.appendTo(element.prev("span").append());
		    }
		});
		$(function () {

    var $btn = $('#btnConfirmar');

    $btn.on("click", function () {
        ShowDialog();
    });

		
  });
  });
En la parte envió de formulario se encuentra la función ajax que hace el envió de variables a php y que debería obtener la respuesta correspondiente.
  #2 (permalink)  
Antiguo 10/02/2014, 07:51
 
Fecha de Ingreso: agosto-2009
Mensajes: 73
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Respuesta desde php a json

Me falto la parte de php:

Código PHP:
$respuestaOK false;
    
$mensajeError "No se puede ejecutar la aplicación";
    
$contenidoOK "";
    
    include (
"funciones.php");
    if(
verifyuser()){
    
$datos $_GET["nuevo"];
    switch (
$datos){
        case 
"nuevaTarea":
            
$nombreTarea    $_POST["nombreTarea"];
            
$notas            $_POST["notas"];
            
$login_nick     $_SESSION["nick"];
            
$estadoTarea    "1";
            
$estadoAI        "1";
        
            
$resultado consultar("INSERT INTO tareas (nombreTarea, fechaCreacion, notas, estadoActivoInactivo, estadoTarea_estadoTarea, login_nick) 
                                            VALUES    ('$nombreTarea', '$fecha', '$notas', '$estadoAI', '$estadoTarea', '$login_nick')"
);
            if(
$resultado == true){
                
$respuestaOK true;
                
$mensajeError "Se agrego la tarea";
                
$contenidoOK =     header("Location: inbox.php?opcion=user&pagina=bandeja.php");
            }else{
                
$mensajeError "No se puede guardar el registro en la base de datos";
            }
        break;
        case 
"nuevoProyecto":
            if (isset(
$_POST["editar"])){
            
$nombreProyecto    $_POST["nombrepro"];
            
$detalle        $_POST["detalle"];
            
$login_nick     $_SESSION["nick"];
            
$fechainicio    $_POST["fechainicio"];
            
$fechafin        $_POST["fechafin"];
            
$estadoProyecto "1";
            
$opcion "8";
            
$fechamysqli     cambiarfecha_mysql($fechainicio);
            
$fechamysqlf     cambiarfecha_mysql($fechafin);
            
consultar("INSERT INTO proyecto (nombreProyecto, detalleProyecto, fechaInicio, fechaFin, estadoProyecto, login_nick) 
                                VALUES    ('$nombreProyecto', '$detalle', '$fechamysqli', '$fechamysqlf', '$estadoProyecto', '$login_nick')"
);
            
$resultado consultar("SELECT MAX(idProyecto) FROM proyecto WHERE estadoProyecto = '1' AND login_nick='$login_nick'");
            while(
$row=mysql_fetch_array ($resultado)){
                
$idPro $row ["MAX(idProyecto)"];
            }
            echo 
$idPro;
            foreach(
$_POST['mover_check'] as $key){
                
$idTarea $key;
                
consultar("UPDATE tareas SET estadoTarea_estadoTarea='$opcion', proyecto_idProyecto='$idPro' WHERE  idTarea='$idTarea' AND login_nick='$login_nick'");
            
            }
                        
            
header("Location: inbox.php?pagina=proyecto&opcion=activos");
            }
            else {
                
header("Location: inbox.php?pagina=bandeja");
            }
        break;
        case 
"modifica":
        
        break;
}
$salidaJson = array("respuesta" => $respuestaOK,
                    
"mensaje" => $mensajeError,
                    
"contenido" => $contenidoOK);

echo 
json_encode($salidaJson);

Saludos
  #3 (permalink)  
Antiguo 10/02/2014, 08:00
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Respuesta desde php a json

No puedes guardar el contenido de un header dentro de una variable.

Lo que puedes hacer es un include, pero utilizando una técnica parecida a esta.

PD: Antes de hacer json_encode, te recomiendo que coloques esto:

Código PHP:
Ver original
  1. header('Content-Type: application/json');

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 10/02/2014, 08:28
 
Fecha de Ingreso: agosto-2009
Mensajes: 73
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Respuesta desde php a json

jonni09lo muchas gracias por tu respuesta, debería quedar algo así?

Código PHP:
    if($resultado == true){
                
$respuestaOK true;
                
$mensajeError "Se agrego la tarea";
                
$contenidoOK =     { ob_start();
                                    include(
"inbox.php?pagina=bandeja");
                                    
$content ob_get_contents();
                                    
ob_end_clean();
                                } 
Otra pregunta, al dar al boton guardar, no entra en la funcion response salta directamente al else que dice "ERROR GENERAL DELSISTEMA".

He revisado con firebug, pero no larga ningun error, notice o warning.

Saludos.
  #5 (permalink)  
Antiguo 10/02/2014, 08:33
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Respuesta desde php a json

Sabes programar en PHP? . La sintaxis que usas es totalmente errónea. Debe de ser algo así:

Código PHP:
Ver original
  1. include("inbox.php?pagina=bandeja");
  2. $contenidoOK = ob_get_contents();

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: json, php, respuesta
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:30.