my ajax as follow:
<script>
$(document).ready(function () {
$.ajaxSetup({
data: {csrfmiddlewaretoken: '{{ csrf_token }}'}
});
$("#submit").submit(function () {
var title = $("#title").val();
var body = $("#body").val();
var images = $("#browsefile")[0].files[0];
$.ajax({
type: "POST",
data: {title: title, body: body, images: images},
url: "{% url 'xxxxx' %}",
success: function (result, statues, xml) {
alert(result);
},
error: function () {
alert("false");
}
})
})
})
</script>
and my urls pattern as follow:
from django.conf.urls import url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from blog import views
urlpatterns = [
url(regex=r'^add/$', view=views.add, name='bbb'),
url(regex=r'^newBlog/$', view=views.addblog, name='xxxxx'),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
I except ajax post data to the method addblog, but I get POST /add/ HTTP/1.1 instead. anyone can told me where i made a mistake, thanks!
Try adding event.preventDefault(); in the submit function to disable the default behavior of the form, which is to follow the action attribute.
$("#submit").submit(function (event) {
event.preventDefault();
var title = $("#title").val();
var body = $("#body").val();
var images = $("#browsefile")[0].files[0];
formdata = new FormData();
formdata.append("images", images);
formdata.append("body", body);
formdata.append("title", title);
$.ajax({
type: "POST",
data: formdata,
url: "{% url 'xxxxx' %}",
success: function (result, statues, xml) {
alert(result);
},
error: function () {
alert("false");
}
})
return false;
})
EDIT: per comment.