jQuery.getJSON no desencadena la devolución de llamada
django simplejson (4)
Tengo un código html:
<button>asd</button>
<script type = "text/javascript">
$(''button'').click(
function() {
$.getJSON(''/schedule/test/'', function(json) {
alert(''json: '' + json + '' ...'');
});
}
);
</script>
y vista correspondiente:
def test(request):
if request.method == ''GET'':
json = simplejson.dumps(''hello world!'')
return HttpResponse(json, mimetype = ''application/json'')
La vista se ejecuta (probada mediante print
), la variable json
se inicializa pero no aparece ninguna alerta. ¿Qué hice mal? Ya he visto algunos documentos en este ( http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback por ejemplo) pero no encontré una respuesta.
EDITAR: El problema era que HttpResponse
no se importó ... Desafortunadamente Django no dio ningún error al respecto. Todo lo demás fue correcto. Saludos
chriss
¿Estás seguro de que el JSON es válido? eche un vistazo a la respuesta directamente o use Firebug
Es probable que el json no esté formado correctamente. A veces esto me pasa cuando mi código, que debería estar produciendo json, está generando un error. Dos opciones:
Use firebug para ver la respuesta JSON
Configure el manejo de errores en su código jquery usando las opciones de jQuery.ajaxSetup tales como:
$.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) { alert(textStatus); alert(errorThrown); alert(XMLHttpRequest.responseText); }});
Usar el manejo de errores para la depuración es excelente, ya que sabrá de inmediato cuando haya un problema con su respuesta. Puede consultar la documentación de jQuery para jQuery.ajax que tiene todas las opciones disponibles para jQuery.ajaxSetup.
EDITAR: Una tercera opción sería abrir la URL que debería generar el JSON y ejecutar el resultado a través de JSON Lint para validarlo.
Me encontré con esto hace un tiempo y reescribí un contenedor para Ajax de jQuery que le permite pasar el getJSON normal y una devolución de llamada de error adicional por obtención.
http://www.nurelm.com/themanual/2010/08/09/self-indulgent-code-jquery-getjson-with-error-handling/
Creo que te estás perdiendo el $ final en el patrón de url.