Я намагаюся повернути дані із запитом на 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();