2009-02-21 20 views
25

Tengo un código html:jQuery.getJSON no desencadenar devolución de llamada

<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') 

Se ejecuta la vista (probado usando print), json variables se inicializa pero no aparece 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. respetos
chriss

+0

¿Ha hecho una copia de seguridad y lo ha intentado como texto sin formato solo para patadas? – Sampson

Respuesta

47

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:

  • Uso Firebug para ver la respuesta JSON

  • de error Configuración de manipulación en el código jQuery utilizando las opciones jQuery.ajaxSetup como:

    $.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) { 
         alert(textStatus); 
         alert(errorThrown); 
         alert(XMLHttpRequest.responseText); 
        }}); 
    

Utilizando el El manejo de errores para la depuración es excelente, ya que sabrá de inmediato cuando haya un problema con su respuesta. Puede consultar el jQuery documentation for jQuery.ajax que tiene todas las opciones disponibles para jQuery.ajaxSetup.

EDITAR: Una tercera opción sería simplemente abrir la URL que debería generar el JSON y ejecutar la salida a través de JSON Lint para validarlo.

+0

¿Podría indicarme o explicarme cómo verificar JSON con FireBug? – chriss

+1

Sure. Supongo que tienes FireBug instalado en FF, avísame si no lo haces. FireBug realiza un seguimiento de toda su solicitud de ajax en la pestaña XHR. Expanda la solicitud allí y haga clic en la pestaña 'respuesta'. Verá el JSON u otro texto de respuesta allí. ¡Buena suerte! – jonstjohn

+0

Debe cerrar un corchete más en el código que proporcionó. –

3

¿Estás seguro de que el JSON es válido? eche un vistazo a la respuesta directamente o use Firebug

0

creo que se echa en falta el arrastre $ en el patrón de URL.

Cuestiones relacionadas