(Джанго) AJAX-вызов не попадает в представление, форма отправки делает.Зачем? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть форма, которая успешно обращается к этому URL:

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>

Однако, когда я пытаюсь нажать на тот же URL-адрес от нажатия кнопки с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 голосов
/ 25 апреля 2018

В вашем ajax post методе url отсутствует конечная косая черта.Добавление '/' в конец URL решит проблему.

$.ajax({
    url: "/products/" + slug + "-" + id + "-0-0/add/",
    type: 'POST',
    success: () => {
        onAddToCartSuccess();
    },
    error: (response) => {
        onAddToCartError(response);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...