Foros del Web » Programando para Internet » Python »

JsonResponse and Ajax function.

Estas en el tema de JsonResponse and Ajax function. en el foro de Python en Foros del Web. Hola! Estoy intentando mandar un Json para que lo recoja mi funcion ajax, pero no hay manera. Lo que obtengo al darle a mi botón ...
  #1 (permalink)  
Antiguo 10/02/2015, 09:54
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 9 años, 7 meses
Puntos: 0
Pregunta JsonResponse and Ajax function.

Hola!

Estoy intentando mandar un Json para que lo recoja mi funcion ajax, pero no hay manera.
Lo que obtengo al darle a mi botón eliminar (elimina un registro de la base de datos) es la página con el mensaje: {"status":"True","product_id":p.id}. Esto no debería salir, sino ser enviado a la función y aparecer un alert diciendo que el registro ha sido eliminado.

Estoy trabajando con django 1.7. Alguien sabría como solucionarlo? No entiendo por que mi función no coge el response y lleva a cabo su código.

Muchas gracias de antemano.

template:

Código HTML:
Ver original
  1. <form method="post" id="frmEliminar">
  2.       {% csrf_token %}
  3.       <input type="hidden" id="modal_idProducto" name="product_id">
  4.       <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Cerrar</
  5. button>
  6.       <button type="submit" class="btn btn-danger">Eliminar</button>
  7.  </form>

views.py:

Código Python:
Ver original
  1. if request.method=="POST":
  2.         if "product_id" in request.POST:
  3.             try:
  4.                 id_producto = request.POST['product_id']
  5.                 p = Pozo.objects.get(pk=id_producto)
  6.                 mensaje = {"status":"True","product_id":p.id}
  7.                 p.delete() # Elinamos objeto de la base de datos
  8.                 return JsonResponse(mensaje)
  9.             except:
  10.                 mensaje = {"status":"False"}
  11.                 return JsonResponse(mensaje)

Ajax.js:

Código Javascript:
Ver original
  1. // Autor: @jqcaper
  2. // Configuraciones Generales
  3. var nombre_tabla = "#tabla_productos"; // id
  4. var nombre_boton_eliminar = ".delete"; // Clase
  5. var nombre_formulario_modal = "#frmEliminar"; //id
  6. var nombre_ventana_modal = "#myModal"; // id
  7. // Fin de configuraciones
  8. $(document).on('ready',function(){
  9.     $(nombre_boton_eliminar).on('click',function(e){
  10.         e.preventDefault();
  11.         var Pid = $(this).attr('id');
  12.         var name = $(this).data('name');
  13.         $('#modal_idProducto').val(Pid);
  14.         $('#modal_name').text(name);
  15.     });
  16.     var options = {
  17.         success:function(response)
  18.         {
  19.             if(response.status=="True"){
  20.                 alert("Eliminado!");
  21.                 var idProd = response.product_id;
  22.                 var elementos= $(nombre_tabla+' >tbody >tr').length;
  23.                 if(elementos==1){
  24.                     location.reload();
  25.                 }else{
  26.                     $('#tr'+idProd).remove();
  27.                     $(nombre_ventana_modal).modal('hide');
  28.                 }
  29.             }else{
  30.                 alert("Hubo un error al eliminar!");
  31.                 $(nombre_ventana_modal).modal('hide');
  32.             };
  33.         }
  34.     };
  35.     $(nombre_formulario_modal).ajaxForm(options);
  36. });

Última edición por razpeitia; 10/02/2015 a las 10:50
  #2 (permalink)  
Antiguo 10/02/2015, 10:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: JsonResponse and Ajax function.

El problema esta en el javascript no estas haciendo bien el binding.

Checa que te devuelve:
Código Javascript:
Ver original
  1. $(nombre_boton_eliminar)
No veo ningun elemento con la clase delete en el html que pones.
  #3 (permalink)  
Antiguo 10/02/2015, 11:19
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 9 años, 7 meses
Puntos: 0
Pregunta Respuesta: JsonResponse and Ajax function.

Se refiere a este botón de eliminar:

{% if results %}
<table class="table table-hover" id="tabla_productos">
<thead>
<tr>
<th>Codpozo</th>
</tr>
</thead>
{% for p in results %}
<tbody>
<tr id="tr{{p.id}}">
<td>{{ p.codpozo }}</td>

{% if user.is_authenticated and user.is_staff %}

<td><a href="#myModal" role="button" class="btn btn-danger delete" data-toggle="modal" id="{{p.id}}" data-name="{{p.codpozo}}">Eliminar</a></td>
{% endif %}
</tr>
</tbody>
{% endfor %}
</table>
{% else %}
<h2>No existen pozos</h2>
{% endif %}
  #4 (permalink)  
Antiguo 10/02/2015, 11:22
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: JsonResponse and Ajax function.

El código lo he sacado gracias a este tutorial [URL="https://www.youtube.com/watch?v=Pxn5L1qJTAw"]https://www.youtube.com/watch?v=Pxn5L1qJTAw[/URL]
Sin embargo a él si que le funciona.

Etiquetas: ajax, django
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 11:24.