Question

J'ai un code html:

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

et vue correspondante:

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

Le point de vue est exécuté (testé à l'aide print), variable json est initialisée mais pas d'alerte apparaît. Qu'ai-je fait de mal? Je l'ai déjà vu des documents sur ce ( http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback par exemple) mais je n » ai pas t trouver une réponse.
EDIT: Le problème a été que HttpResponse n'a pas été importé ... Malheureusement, Django a pas d'erreur à ce sujet. Tout le reste était correct. ce qui a trait
chriss

Était-ce utile?

La solution

Il est probable que le JSON est pas correctement formé. Parfois, cela arrive à moi quand mon code, qui devrait être produit JSON génère une erreur. Deux options:

  • Utilisez firebug pour afficher la réponse JSON

  • Erreur de configuration dans le traitement de votre code jquery en utilisant les options de jQuery.ajaxSetup telles que:

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

Utilisation de l'erreur de manipulation pour le débogage est grande, puisque vous saurez immédiatement quand il y a un problème avec votre réponse. Vous pouvez consulter la documentation jQuery pour jQuery.ajax qui a toutes les options disponibles pour jQuery.ajaxSetup.

EDIT: Une troisième option serait de simplement ouvrir l'URL qui devrait produire le JSON et le rediriger vers JSON Lint pour valider.

Autres conseils

Êtes-vous sûr que le JSON est valide? jetez un oeil à la réponse directement ou utiliser Firebug

Je suis tombé sur ce tout à l'heure et réécrit une enveloppe pour l'Ajax jQuery qui vous permet de passer la getJSON normale et un rappel d'erreur supplémentaire par get.

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

Je pense que vous manquez le $ de fuite dans le modèle d'URL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top