【问题标题】:django ajax post to unexpect urldjango ajax 发布到意外的 url
【发布时间】:2017-09-22 18:40:10
【问题描述】:

我的ajax如下:

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

我的网址模式如下:

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)

我除了 ajax 将数据发布到方法 addblog,但我得到了POST /add/ HTTP/1.1。谁能告诉我哪里出错了,谢谢!

【问题讨论】:

  • 你能告诉我们你的整个url.py文件吗?
  • @Algorithmatic 好的,我重新编辑我的 urls.py 文件
  • 我在视图中设置了一个断点。 ajax发布数据时,总是进入方法add,而不是addblog
  • 嗯,很奇怪。你能在页面渲染后检查 ajax sn-p 中url 的值吗?您可以通过在浏览器中检查 html 的源代码来做到这一点。
  • @Algorithmatic 我试过了,页面中的 url 是 url: "/newBlog/"

标签: ajax django


【解决方案1】:

尝试在提交函数中添加event.preventDefault(); 来禁用表单的默认行为,即跟随action 属性。

$("#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;
    })

编辑: 每条评论。

【讨论】:

猜你喜欢
  • 2010-12-16
  • 1970-01-01
  • 2011-12-06
  • 2014-01-16
  • 1970-01-01
  • 2013-08-14
  • 2015-03-14
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多