2016-08-08 12 views
0

現在、ajaxでポストをdjangoフォームに送信していますが、JQueryなしでこれを行う必要があります。AjaxポストをJQueryを使用せずにDjangoフォームに送る方法

動作しているJQueryのバージョンです。

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

この投稿要求をJQueryなしで送信するにはどうすればよいですか? 私はこれを試しました

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); 

フォームは有効ではありません。

ジャンゴフォーム:

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

Djangoのモデル:

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

Djangoのビュー:request.send()

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

それは私が使用しているコードですが、それはまだ私のDjangoのフォームで有効ではありません。 –

+0

Djangoの処理コードとhtml /テンプレートを投稿できますか? – Hopeless

答えて

1

data引数は、URLエンコードされた文字列である必要があります。 jQueryはオブジェクトを文字列に変換しますが、jQueryを使用しない場合は自分で行う必要があります。

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

これは私が必要としていたもので、今すぐフォームが検証されます。ありがとう! –

関連する問題