所以我在html的头部调用它:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
然后用一个按钮调用一个函数:
<div>
<button class= "button" type="ajax-call" onclick="getValue();">Envoyer</button>
</div>
函数为:
<script type="text/javascript">
function getValue(){
....
$.ajax({
url: "{% url 'sondage' %}",
type : 'POST',
dataType: "json",
data: {heure_reponse: heure, jour_reponse: jour,habitude_reponse: habit, faim_reponse : faim, soif_reponse: soif, estomac_reponse:estomac, miam_reponse: miam, quantite_reponse: quantite, but_reponse: but, adresse_reponse: adresse, identifiant_reponse:identifiant
}
})
}
</script>
问题是:当我在django站点(python)的views.py中使用
from django.contrib.auth.decorators import login_required
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render
from csv import writer
from csv import QUOTE_MINIMAL
@csrf_exempt
@login_required
def sondage(request):
#Récupération des données par ajax
reponses = request.POST.items()
reponses = list(reponses)
if len(reponses) == 0:
print(" AJAX PROBLEME ")
reponses.append(request.user.get_filename().split('/')[1].split('.')[0])
name = request.user.get_filename().split('/')[1].split('.')[0]
#Ecriture dans le csv
write_csv(reponses,name)
#Appel de la page que l'on est en train de traiter
return render(request, 'sondage.html',{'data':reponses})
def write_csv(data,name):
#Ouverture en mode APPEND
with open('uploads/questionnaire/sondage.csv', 'a', newline='', encoding="utf-8") as csvfile:
csv_writer = writer(csvfile, delimiter=',')
csv_writer.writerow(data)
csvfile.close()
我总是有"AJAX问题"! 为什么?我们如何解决这个问题?
你应该像这样转换你的数据字典
var dict_data = {heure_reponse: heure, jour_reponse: jour,habitude_reponse: habit, faim_reponse : faim, soif_reponse: soif, estomac_reponse:estomac, miam_reponse: miam, quantite_reponse: quantite, but_reponse: but, adresse_reponse: adresse, identifiant_reponse:identifiant}
const data= JSON.stringify(dict_data)
$.ajax({
url: "{% url 'sondage' %}",
type : 'POST',
dataType: "json",
data: data})
然后发送在Django视图中像这样读取
data = json.loads(request.POST['data'])