2016-08-08 26 views
0

Ich sende derzeit Beiträge mit Ajax zu einem Django-Formular, aber ich muss dies ohne JQuery tun.Wie man einen Ajax-Beitrag an ein Django-Formular ohne JQuery sendet

Hier ist die funktionierende JQuery-Version.

$.ajax({ 
    url : "/platform/post-tracking/", 
    type : "POST", 
    async: true, 
    data : { 
     account : 229829623, 
     width : pageWidth 
    } 
}); 

Wie würde ich diese Postanforderung ohne JQuery senden? Ich habe versucht, diese

data = { 
     account : 229829623, 
     width : pageWidth 
} 
var request = new XMLHttpRequest(); 
request.open('POST', '/platform/post-tracking/', true); 
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
request.send(data); 

Aber die Form ist nicht gültig.

Django Form:

class TrackingForm(forms.ModelForm): 
    class Meta: 
     model = TrackedSession 
     fields = ('account', 'width') 

Django Modell:

class TrackedSession(models.Model): 
    account = models.IntegerField(default=0) 
    width = models.IntegerField(default=0) 

Django Ausblick:

def TrackDataView(request): 
    if request.method == 'POST': 
     form = TrackingForm(request.POST) 
     if form.is_valid(): 
      print "Form is valid." 
      temp = form.save(commit=False) 

      session = TrackedSession() 
      session.account = temp.account 
      session.trackedIp = trackingip 
      session.width = temp.width 
      session.save() 
      print("Session Created") 
    else: 
     print "Form isn't valid." 
     print form.errors 
    response_data = "Success" 
    return HttpResponse(
     json.dumps(response_data), 
     content_type="application/json" 
     ) 
+0

http://youmightnotneedjquery.com/#post – Hopeless

+0

Das ist der Code, den ich verwenden, aber es ist noch nicht gültig in meiner django Form. –

+0

Können Sie Ihren Django-Bearbeitungscode und Ihre HTML/Vorlage posten? – Hopeless

Antwort

1

Das data Argument request.send() Bedürfnisse ein URL-codierter String sein. jQuery konvertiert ein Objekt in eine Zeichenfolge, aber wenn Sie jQuery nicht verwenden, müssen Sie es selbst tun.

data = 'account=229829623&width=' + encodeURIComponent(pageWidth); 
request.send(data); 
+0

Dies ist, was ich brauchte, validiert die Form jetzt. Vielen Dank! –