I have a problem with ajax form submission. My problem is whenever I click submi it redirect me to a new page and show me the responses there.
here is my django view
@csrf_exempt
def my_view(request):
if request.is_ajax and request.method == "POST":
# do something and if successfully
return JsonResponse({'success': True}, status=200)
# if not success
return JsonResponse({'fail': True}, status=400)
# other thingss
my template
<div id="form-div">
<form action="{% url 'my_view' %}" method="POST" id="my-form">
# some fields ..
<button type="submit">submit</button>
</form>
</div>
ajax
$("#my-form").submit(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: my_url,
data: {some datas},
success: function (response) {
# some jquery code to update DOM
},
error: function (response) {
# some jquery code to update DOM
}
})
})
Now the code above that i showed you works fine for me but the problem comes if I append the form on event like this.
<button id="my-btn">my btn</button>
$("#my-btn).click(function(e) {
e.preventDefault();
$(#form-div).append(
"
<form action="{% url 'my_view' %}" method="POST" id="my-form">
# some fields ..
<button type="submit">submit</button>
</form>
"
);
})
after I clicked the button and inspected the form it showed the exact same as my original form but if i do the post request it will redirect me the other page rather than execute the query code I defined.
What is the problem here?