2016-05-11 9 views
0

Ich versuche, eine AJAX-Post-Anfrage von einer meiner Django-Webseiten zu machen, aber es funktioniert nicht. Ich vermute, dass das Problem daran liegt, dass ich nicht weiß, wie ich die URL in der externen Javascript-Datei (die sich in einem Unterordner des statischen Ordners befindet) korrekt referenzieren kann. Der Fensteralarm in der Mitte meiner Javascript-Datei wird korrekt angezeigt, so dass ich weiß, dass der Code bis dorthin ausgeführt wird, aber der POST wird nicht ausgeführt.AJAX Post in externe JS-Datei mit Django

Vielen Dank im Voraus für Hinweise, wie Sie dies beheben können.

Views.py:

@csrf_exempt 
def survey(request): 
    survey_response = Post.objects.all() 
    post = Post.objects.get(question=u'Are you happy with your waste management services?') 

    if request.method == 'POST' and request.POST['start[action]']=="geolocation": 
     latitude = request.POST['start[latitude]'] 
     longitude = request.POST['start[longitude]'] 

    if request.method == 'POST' and request.POST['start[action]']=="ethereum": 
     transaction_id = request.POST['start[transaction_id]'] 
     print transaction_id 

    return render(request, 'poll/survey.html', {'survey_response': survey_response}) 

Urls.py:

from django.conf.urls import url 
from . import views 
urlpatterns = [ 
    url(r'^survey/', views.survey, name='survey'),] 

Javascript Auszug (bei statischen gelegen/Umfrage/javascript/votes.js)

function yesVote(){ 
var transaction_ID= sendM.increaseYes.sendTransaction({from:council}); 
sendTransaction(transaction_ID); 
} 

function noVote(){ 
var transaction_ID=sendM.increaseNo.sendTransaction({from:council}); 
sendTransaction(transaction_ID); 
} 

function sendTransaction(transaction_ID){ 
var ethereum = "ethereum"; 
window.alert("HI"); 
$.ajax({ 
url: "/survey/", 
type:"POST", 
data: {start:{ 
    action:ethereum, 
    transaction:transaction_ID} 
    }, 
dataType:'json', 
success: function(data){ 
alert('success'+data); 
} 
})} 
+0

Können Sie 'request.POST' drucken und es hier teilen? – alix

+0

Nur eine kleine Sache: Es sollte "Datatype" nicht "DataType" sein. – WeGi

+0

Fehler gefunden - es hätte "transaction_id = request.POST ['start [transaction_id]']" sein müssen. Außerdem musste der Datentyp Rechtschreibfehler korrigiert werden. Danke beiden – Anne2504

Antwort

0

Es war ein Fehler in views.py, der die Daten aus dem AJAX-Post fälschlicherweise als ['start [transaction_id]'] anstelle von ['start [transaction]]' referenziert

if request.method == 'POST' and request.POST['start[action]']=="ethereum": 
    transaction_id = request.POST['start[transaction]']