Foros del Web » Programando para Internet » Jquery »

JSON response

Estas en el tema de JSON response en el foro de Jquery en Foros del Web. Hola! Estoy teniendo un problemilla al enviar un json a una función javascript. Estoy utilizango Django 1.7 y en views he puesto este código: id_producto ...
  #1 (permalink)  
Antiguo 19/02/2015, 12:11
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 9 años, 7 meses
Puntos: 0
Pregunta JSON response

Hola!

Estoy teniendo un problemilla al enviar un json a una función javascript.
Estoy utilizango Django 1.7 y en views he puesto este código:

id_producto = request.POST['product_id']
p = Pozo.objects.get(pk=id_producto)
mensaje = {"status":"True","product_id":p.id}
p.delete() # Eliminamos objeto de la base de datos
return JsonResponse(mensaje)

El código lo que hace es borrar un registro de la base de datos y una vez está eliminado envia un Json a la función JS.

En el json envio un mensaje con este contenido: {"status":"True","product_id":p.id}

Y la función JS dice lo siquiente:

// Autor: @jqcaper
// Configuraciones Generales

var nombre_tabla = "#tabla_productos"; // id
var nombre_boton_eliminar = ".delete"; // Clase
var nombre_formulario_modal = "#frmEliminar"; //id
var nombre_ventana_modal = "#myModal"; // id

// Fin de configuraciones

$(document).on('ready',function(){
$(nombre_boton_eliminar).on('click',function(e){
e.preventDefault();
var Pid = $(this).attr('id');
var name = $(this).data('name');
$('#modal_idProducto').val(Pid);
$('#modal_name').text(name);
});
var options = {
success:function(response)
{
if(response.status=="True"){
alert("Eliminado!");
var idProd = response.product_id;
var elementos= $(nombre_tabla+' >tbody >tr').length;
if(elementos==1){
location.reload();
}else{
$('#tr'+idProd).remove();
$(nombre_ventana_modal).modal('hide');
}
}else{
alert("Hubo un error al eliminar!");
$(nombre_ventana_modal).modal('hide');
};
}
};
$(nombre_formulario_modal).ajaxForm(options);
});


Entonces al ser la respuesta True debería aparecer un alert diciendo eliminado, pero no ocurre así. Me sale una pantalla con status= True, pero ni rastro del alert.

Hay algo que no estoy haciendo bien, me falla algo a la hora del envío del status o al recogerlo.

Alguien sabe porque no me funciona?

Muchas gracias de antemano!

Última edición por elcaiaimar; 19/02/2015 a las 12:18
  #2 (permalink)  
Antiguo 19/02/2015, 12:18
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: JSON response

Estás enviando un JsonResponse pero no lo estás parseando.
Pasá la respuesta por un $.parseJSON() antes de levantar su resultado.

Código Javascript:
Ver original
  1. success:function(response)
  2. {
  3.     var parsed = $.parseJSON(response);
  4.     if(parsed.status == "True"){
  5.         alert("Eliminado!");
  6.     }
  7. }

Saludos :)
  #3 (permalink)  
Antiguo 19/02/2015, 12:59
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: JSON response

Muchas gracias GeekGirl pero aún así no lo reconoce :(
Sigue devolviendome la página con status =True y nada más
Hay que descargarse algo de jquery para que funcione el parseJSON o con la libreria basta?
Gracias de nuevo
  #4 (permalink)  
Antiguo 19/02/2015, 13:04
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: JSON response

Con la librería basta.
Por qué no hacés un console.log(response); para ver que está llegando?

Última edición por GeekGirl; 19/02/2015 a las 13:11
  #5 (permalink)  
Antiguo 19/02/2015, 16:19
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: JSON response

Pues lo he hecho pero parece que no llega a entrar dentro de la función porque no da ningún resultado.
Por si sirve de ayuda, el borrado del registro se hace desde un botón. Cuando lo clicko además de eliminarlo devuelve la pantalla con status =True y nada en la consola.
  #6 (permalink)  
Antiguo 20/02/2015, 06:36
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: JSON response

Tengo mis dudas de que ese ajaxForm esté funcionando correctamente.
Por qué no asociás un AJAX común de jQuery al submit() de tu formulario o si el input no es de tipo submit a click()?

Código Javascript:
Ver original
  1. $('#botonForm').click(function() {
  2. // $(#tuForm).submit(function() { De usar el submit tenés que usar un preventDefault para evitar el envío del form  
  3.   $.ajax({
  4.       type: "POST",
  5.       url: rutaATuArchivoQueProcesaElForm.php,
  6.       data: dataDelFormulario,
  7.       dataType: "json",
  8.       success: function (response) {
  9.         var parsed = $.parseJSON(response);
  10.  
  11.         if (parsed.status=="True") {
  12.           alert("Eliminado!");
  13.           var idProd = response.product_id;
  14.           var elementos= $(nombre_tabla+' >tbody >tr').length;
  15.  
  16.           if (elementos==1) {
  17.             location.reload();
  18.           } else {
  19.             $('#tr'+idProd).remove();
  20.             $(nombre_ventana_modal).modal('hide');
  21.           }
  22.         } else {
  23.           alert("Hubo un error al eliminar!");
  24.           $(nombre_ventana_modal).modal('hide');
  25.         }
  26.       }
  27.   });
  28. });

Etiquetas: 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:32.