/ / Django ajax переадресація під час подання форми - python, jquery, ajax, django

Django ajax переадресація під час подання форми - python, jquery, ajax, django

Я намагаюся повернути дані із запитом на ajaxподання форми Моєю метою було також використовувати два види, один теж обробляти завантаження шаблону, а другий для обробки запиту POST з форми. У поточному стані форма перенаправляється на JSON, який знаходиться у зворотному дзвінку. Це має сенс, оскільки це вказує на URL-адресу дії форми, однак я хочу просто передати дані на поточну сторінку, а не перезавантажувати сторінку або перенаправляти на іншу сторінку.

Ось код:

user.html

<form action="{% url "ajax-user-post" %}" method="post">
{% csrf_token %}
{% for user in users %}
<input type="submit" name="name" value="{{ user }}">
{% endfor %}

views.py

def ajax_user(request):
# get some data..

if request.METHOD == "POST":
user = request.POST["user"]
user_data = User.objects.get(user=user)

data = {"user_data": user_data}
return JsonResponse(data)


def user(request):
return render(request, "user.html", context)

urls.py

url(r"^user/", user, name="user"),
url(r"^ajax/user/", ajax_user, name="ajax-user-post")

.js

$("form").on("submit", function(){
var name = // the name of the user selected
$.ajax({
type: "POST",
dataType: "json",
url: "ajax/user/",
data: { "csrfmiddlewaretoken": csrftoken, "name": name, "form": $form.serialize() },
success:function(data) {
// hide the current data
console.log(data);
displayUserData(data)
}
})
});

Дякуємо за допомогу заздалегідь!

Відповіді:

4 для відповіді № 1

я хочу просто передати дані на поточну сторінку, а не перезавантажувати сторінку або перенаправляти на іншу сторінку.

Це означає, що вам потрібно припинити подію форми подання з event.preventDefault () дзвонити

Отже, змініть цей рядок із:

$("form").on("submit", function(){

до наступних двох:

$("form").on("submit", function(e){
e.preventDefault();