Отправить данные из javascript для просмотра и возврата измененных данных

Сейчас я просто проверяю, как это работает, поэтому использую тривиальный пример. У меня есть переменная с именем text в js. Хочу отправить его на просмотр, сделать с ним какие-то манипуляции и вернуть в js. Мне удалось отправить text через запрос POST ajax, но у меня возникли проблемы с пониманием того, как я могу вернуть обновленное значение. Вот мой сценарий

    function ajaxTest(){
        var text = "text to send";
        $.ajax({
            url:'test/',
            type:'POST',
            data:{text : text, csrfmiddlewaretoken: '{{ csrf_token }}'},
            success:function () {
                console.info("Ajax test success")
            },

            error:function () {
                console.info("Ajax test failure")
            }
        })
    }

Мои шаблоны URL:

from .views import *
urlpatterns=[
    path('test/', testingAjax),
]

И у меня есть представление, что получить этот текст

def testingAjax(request):
    if request.method == 'POST':
        x = request.POST.get('text')
        textToReturn = x + " text to return"
        return HttpResponse #And here trouble begins
    elif request.method == 'GET':
        status = "Nuh uh"
        return HttpResponse(status)

Что я должен вставить HttpResponse и как я могу теперь поймать эти данные в javascript (например, для журнала консоли)?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
440
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны иметь возможность просто вернуть HttpResponse(textToReturn).

Однако вы, вероятно, захотите изучить JsonResponse и вернуть структуру данных для вашего javascript, чтобы что-то с ней сделать.

from django.http import JsonResponse, HttpResponse

def testingAjax(request):
if request.method == 'POST':
    x = request.POST.get('text')
    textToReturn = x + " text to return"
    return JsonResponse({'result':textToReturn,})
elif request.method == 'GET':
    status = "Nuh uh"
    return HttpResponse(status)

Для javascript для регистрации данных, которые возвращаются в вашем первом примере, будет выглядеть так:

function ajaxTest(){
    var text = "text to send";
    $.ajax({
        url:'test/',
        type:'POST',
        data:{text : text, csrfmiddlewaretoken: '{{ csrf_token }}'},
        success:function (data) {
            console.info("Ajax test success");
            console.info(data);
        },

        error:function () {
            console.info("Ajax test failure")
        }
    })
} 

Спасибо! Но что произойдет, если запрос из представления займет некоторое время? Будет ли функция js просто «ждать» ответа или она вернет что-то вроде Null?

indeedme 27.05.2019 21:12

да. Некоторые другие параметры тайм-аута и завершения находятся в документации jQuery Ajax: api.jquery.com/jquery.ajax

AMG 28.05.2019 06:22

Другие вопросы по теме