Pergunta

Eu tenho um código html:

<button>asd</button>
<script type = "text/javascript">
$('button').click(
    function() {
        $.getJSON('/schedule/test/', function(json) {
            alert('json: ' + json + ' ...');
        });
    }
);
</script>

e vista correspondente:

def test(request):
    if request.method == 'GET':
        json = simplejson.dumps('hello world!')
        return HttpResponse(json, mimetype = 'application/json')

A visão é executado (testado usando print), variável json é inicializado, mas não aparece alerta. O que eu fiz errado? Eu já vi alguns docs sobre isso ( http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback por exemplo), mas eu não' t encontrar uma resposta.
EDIT: O problema era que HttpResponse não foi importado ... Infelizmente Django deu nenhum erro sobre ele. Tudo o resto foi correta. relação
chriss

Foi útil?

Solução

É provável que o JSON não está devidamente formado. Às vezes isso acontece comigo quando meu código, que deve produzir json está gerando um erro. Duas opções:

  • Use o Firebug para ver a resposta JSON

  • erro de instalação manipulação em seu código jQuery usando as opções jQuery.ajaxSetup tais como:

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

Usando a manipulação de erro para depuração é grande, já que você vai saber imediatamente quando há um problema com a sua resposta. Você pode conferir o documentação do jQuery para jQuery.ajax que tem todas as opções disponíveis para jQuery.ajaxSetup.

EDIT: Uma terceira opção seria apenas para abrir a URL que deve ser gerar o JSON e executar a saída através JSON Lint para validá-lo.

Outras dicas

Tem certeza que o JSON é válido? dar uma olhada na resposta direta ou usar o Firebug

Eu corri para este um tempo atrás e reescreveu um wrapper para Ajax do jQuery que lhe permite passar o getJSON normal e um retorno de chamada de erro adicional por get.

http://www.nurelm.com/themanual/2010/08/09/self-indulgent-code-jquery-getjson-with-error-handling/

Eu acho que você está faltando o $ arrastando no padrão de URL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top