Salut
Déjà pour voir le contenu de l'ajax qui transite, il te suffit d'utiliser
Firebug pour Firefox ou le debugger chrome intégré et l'onglet 'network'.
tu peux voir chaque requête qui passe, les parametres envoyées... et la
réponse associée; c'est indispensable.
Pour le javascript, tu devrais vraiment utiliser un framework qui te
simplifiera la vie (encodage, callbacks, cross-browser, selectors...). Le
plus simple et standard c'est jQuery mais il y en a plein d'autres;
indispensable aussi.
le jeton csrf il faut que tu le mettes manuellement dans ton template, et
il sera ajouté dans un champ hidden qui aura comme name
"csrfmiddlewaretoken". tu peux récupérer la valeur de ce champ et l'inclure
dans tes requetes ajax
Un petit exemple jquery qui fonctionne :
var data = {
email: $('#email').val(),
password: $('#password').val(),
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val()
};
$.post('/api/login', data, null, 'json').success(function(data, status,
xqhr) {
if (data.success === true) {
document.location = '/home';
} else {
alert(data.error || "Impossible de vous authentifier");
}
});
En général quand on fait de l'ajax, les vues répondent en json
hope this helps :)
Julien
Le 20 avril 2012 11:39, sushi <[email protected]> a écrit :
> Bonjour,
>
> J'ai enfin réussi à exécuter mon script ajax dans mon projet.
>
> Le problème est que le serveur répond bien à ma requête mais me
> renvoie une erreur 500.
>
> J'ai vérifié qu'il n'y avait aucune erreur en accédant directement à
> l'url de ma vue réceptionnant le code AJAX et aucune erreur est affiché
> la vue agit correctement!
>
> Je n'en suis pas sûr mais je pense qu'il y a un problème avec mon jeton
> CSRF, le problème est que je n'ai pas accès au contenu HTML renvoyé (je
> suppose) par django avec l'erreur 500!
>
> Voici donc mon code javascript:
>
> function verif(Read_Data)
> {
> var xhr=new XMLHttpRequest();
> var nom=document.getElementById('input_nom');
>
> xhr.onreadystatechange = function()
> {
> if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status
> == 0) )
> {
> Read_Data(xhr.responseText);
> }
> };
>
> xhr.open("POST","../validation",true);
> xhr.setRequestHeader("X-CSRFToken", "#csrfmiddlewaretoken");
> valeur=encodeURIComponent(nom.value);
> xhr.send("name_user="+valeur);
> }
>
> function readData(readData)
> {
> var toto;
> alert(readData);
> }
>
> Je tiens a précisé encore une fois, j'ai bien tester mon code javascript
> et il fonctionne (il n'y a rien dans readData mais le serveur à bien
> répondu et le alert s'affiche (avec rien dedans bien entendu).
> Mon fichier javascript est static, j'ai configuré mes setting et mes url
> correctement et j'ai bien accès à mon JS (vérification via fireDebug).
>
> Voici le code de ma vue:
>
> def validation(request):
> if request.is_ajax() and request.method == 'POST':
> name_user=request.POST['name_user']
> if User.objects.filter(username=name_user):
> return HttpResponse("memepseudo")
> else:
> return HttpResponse("OK")
> else:
> return HttpResponse("erreur")
>
> J'ai testé si ma vue s'éxécuter correctement en accèdant directement
> à l'url via mon navigateur sans passé par de l'ajax et ça m'affiche
> erreur (ce qui est tout à fait normal!).
>
> J'ai essayé d'écouter le port 8000 via netcat pour récupérer le code
> html renvoyé par django mais ça ne fonctionne pas!
>
> En espérant que vous puissiez m'aider,
>
> cordialement,
>
> sushi
> _______________________________________________
> django mailing list
> [email protected]
> http://lists.afpy.org/mailman/listinfo/django
>
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django