I had a problem submitting a form using Ajax. I have a form that I want to replace with another form asynchronously when the next button is clicked.
Here is the script
$(document).ready(function() { $('#MY_FORM').submit(function() { $.ajax({ data: $(this).serialize(), type: $(this).attr('method'), url: $(this).attr('action'), success: function(response) { $('#FORM_DIV').html(response); } }); return false; }); });
form.py
class CountyForm(forms.Form): county = forms.ModelChoiceField(queryset=County.objects.all(), empty_label='---Select a county---', required=False) other = forms.CharField(required=False) def __init__(self, *args, **kwargs): super(CountyForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.html5_required = True self.helper.form_id = 'MY_FORM' self.helper.add_input(Submit('next', 'Next', css_class='classfinish')) self.helper.layout = Layout('county','other') class WardForm(forms.Form): ward = forms.ModelChoiceField(queryset=Ward.objects.all(), empty_label='Select a ward') other = forms.CharField() def __init__(self, *args, **kwargs): super(WardForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.html5_required = True self.helper.add_input(Submit('save', 'Finish')) self.helper.add_input(Submit('cancel', 'Cancel')) self.helper.layout = Layout('ward','other')
view
def location(request): if request.is_ajax() : wardform = WardForm() return HttpResponse(wardform) countyform = CountyForm() c = {} c.update(csrf(request)) return render(request,'location.html', {'countyform': countyform})
I want, when I press the next button in the county form, the arrival form will appear.
source share