我有一个成功点击此网址的表单:
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请求。
答案 0 :(得分:0)
在你的ajax post方法url中缺少结尾的斜杠。将'/'
添加到网址末尾将解决问题。
$.ajax({
url: "/products/" + slug + "-" + id + "-0-0/add/",
type: 'POST',
success: () => {
onAddToCartSuccess();
},
error: (response) => {
onAddToCartError(response);
}
});