/ / 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();