Ich bin mit Ajax Daten speichern in der Datenbank zu einer Ansicht zu übergeben. In Javascript sehen die Daten korrekt aus, aber in der Ansicht ist null. Lesen Sie die Kommentare in Code für weitere Fragen und InformationenAjax überträgt keine Daten
Mein javascript
:
...
var changed_element=[];
var changed_value=[];
document.getElementById('tabella').addEventListener('change', function(event){
...
changed_element.push(element); //list of list of string
changed_value.push(elem[elem.value].text); //list of string
...
});
document.getElementById('btn-save').addEventListener('click', function() {
console.log('changed_element', changed_element) //print the right value
$.ajax({type: 'POST',
url: '/salva-conoscenze-rapporti/',
data: {
changed_element: changed_element,
changed_value: changed_value //<= comma?
},
success: function(msg) {
console.log(msg) //prints 'It works'
document.getElementById('btn-save').style.display = 'none';
} //<= comma?
});
});
Mein view
:
@staff_member_required
@ensure_csrf_cookie #I need this?
def salva_conoscenze_rapporti(request):
if request.is_ajax():
changed_element = request.POST.get('changed_element', None)
changed_value = request.POST.get('changed_value', None)
msg='it works'
print(changed_element) #prints None instead of array
print(changed_value)
else:
msg="it doesn't work"
return HttpResponse(msg)
Mein template base.html
:
...
<script>
var csrftoken = $.cookie('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);
}
}
});
</script>
...
Mein template
:
{% extends 'base.html' %}
...
Grundsätzlich print(changed_element)
sollten die Daten gibt gibt stattdessen None
.
Mein MIDDLEWARE_CLASSES
in settings.py
:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Meine Variablen:
changed_element=[ [ "conoscenza", "Cliente1", "Cliente2" ] ];
changed_value=[ "Generale" ];
console.log(changed_element)
gibt: Array [ Array[3] ]
gut kann dies nicht Ihr richtiger Code sein, weil es eine eklatante Syntax eerror ist. Wenn Sie Ihren echten Code veröffentlichen, finden Sie vielleicht eine Lösung – e4c5
Sorry, es ist nur vereinfacht ... Ah, vielleicht sagst du die msg ... Ich übersetze das – fabio
Vielleicht der Umfang der Variablen in Javascript? oder etwas in der CSRF? – fabio