(Django)AJAX调用没有查看视图,表单提交确实如此。为什么?

时间:2018-04-25 06:46:12

标签: jquery ajax django forms

我有一个成功点击此网址的表单:

url(r'(?P<slug>[a-z0-9-_]+?)-(?P<product_id>[0-9]+)-(?P<hotel>[0-1]+)-(?P<shuttle>[0-1]+)/add/$',
        views.product_add_to_cart, name="add-to-cart"),

这是表格:

 <form id="product-form" role="form" class="product-form clearfix" method="post"
                  action="{% url 'product:add-to-cart' product_id=product.pk slug=product.get_slug hotel=1 shuttle=1 %}" novalidate>

</form>

然而,当我尝试从按钮点击同一个网址时,点击这样的AJAX调用:

$(".book-event-variants .book-main").click(() => {
    const id = $(".book-main").attr("event-id");
    const slug = $(".book-main").attr("event-slug");
    $.ajax({
        url: "/products/" + slug + "-" + id + "-0-0/add",
        type: 'POST',
        success: () => {
            onAddToCartSuccess();
        },
        error: (response) => {
            onAddToCartError(response);
        }
    });
});

我收到错误:

jquery.js?eedf:9566 POST http://127.0.0.1:8000/products/sofia-fall-2018-1-0-0/add 404(未找到)

为什么两者之间存在差异?

为什么我不能打电话?

首先关注:不同的命名空间可能会成为一个问题。例如我正在从其他应用程序模板执行AJAX请求。

1 个答案:

答案 0 :(得分:0)

在你的ajax post方法url中缺少结尾的斜杠。将'/'添加到网址末尾将解决问题。

$.ajax({
    url: "/products/" + slug + "-" + id + "-0-0/add/",
    type: 'POST',
    success: () => {
        onAddToCartSuccess();
    },
    error: (response) => {
        onAddToCartError(response);
    }
});