Salut à tous ceux qui me lisent.
Bon je veux faire communiquer mon front et mon back(django) via ajax.
Le problème est que je n'arrive pas à récupérer la variable transmise depuis la requête POST ajax.
Le code javaScript est le suivant
Notez que j'utilise une lib javaScript Cookie pour récupérer le csrftoken.
Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 $(function() { // console.log(JSON.parse(window.localStorage.getItem('articles'))); var csrftoken = Cookies.get('csrftoken'); function csrfSafeMethod(method) { // these HTTP methods do not require CSRF protection return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function (xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); // ajax call on the cart chekout const articles = JSON.parse(window.localStorage.getItem('articles')); function callAjax(f) { $.ajax({ url: '/management/check_cart/', dataType: 'json', contentType: 'application/json; charset=utf-8', data: {art: articles,}, type: 'POST', success: f, error: function(error) { console.log(error.statusCode); } }); } function callback(response) { const r = JSON.parse(response); console.log("Voici le retour du serveur : " + r); } $('#check_cart').click(function() { callAjax(callback); }); });
La vue django correspondante est :
Je vous présente l'erreur (qui en gros veut dire que l'objet articles est vide) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def check_cart(request): """ Receive a articles dict data from the frontend and show it(with full details) as cart """ if request.method == "POST": if request.is_ajax(): articles = request.POST.get('art', None) print(articles) data = {"articles": articles} return JsonResponse(data) return render(request, 'management/cart.html')
Donc c'est ça ! J'espère avoir été assez claire pour avoir des réponses sans trop de difficultés.TypeError: the JSON object must be str, bytes or bytearray, not NoneType
Et merci d'avance...
Partager