使用ajax提交的Django表单重定向到表单操作,而不是调用成功

时间:2018-09-02 18:11:01

标签: ajax django forms django-forms

我有简单的表格

class TimeForm(forms.Form):

    time = forms.TimeField()
    date = forms.DateField()

    def clean_date(self):
        time = self.cleaned_data['time']
        date = self.cleaned_data['date']
        date_time = datetime.combine(date, time)
        if datetime.now() > date_time:
            raise ValidationError("datetime error")
        return start_date

具有基于类的视图

class TimeView(View):
    @staticmethod        
    def post(request):
         form = TimeForm(request.POST)
         if form.is_valid():
             # do something
             json_data = json.dumps({'some_record': value})
         else:
             json_data = json.dumps({'errors': form.errors})
         return HttpResponse(json_data, content_type='application/json')

在html中,我具有提交连接为ajax的标准表单

<form action="/time_url/" method="POST" id="time_form">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit">
</form>

<script>
$('#time_form').submit(function(event) {
    event.preventDefault();
    $.ajax({
        type: "POST",
        url: '/time_url/',
        dataType: 'json',
        data: $(this).serialize(),
        success: function(data, textStatus, jqXHR){
            alert('yay');
        }
    })
});
</script>

,我希望能够提交此表单而无需重新加载页面。一切似乎都工作正常,但是没有触发ajax的成功功能,而是使用json数据将页面重定向到/ time_url /。不管表单是否有效,它都会被重定向。

我也尝试过

return JsonResponse(form.errors.get_json_data())

代替

return HttpResponse(json_data, ...)

如此处Django form submit with ajax所示,但没有成功。

我是Java语言的新手,但对我来说,这似乎是ajax的问题​​,因为正确的数据由服务器提供。

感谢任何提示。

0 个答案:

没有答案